Problema al intentar leer un archivo de texto en databricks uso de Local de Archivo de la API en lugar de la Chispa de la API

0

Pregunta

Estoy tratando de leer un pequeño archivo de texto que se agrega como una tabla para el valor predeterminado db en Databricks. Al intentar leer el archivo Local a través de la API de Archivo, me sale un FileNotFoundErrorpero soy capaz de leer en el mismo archivo como Chispa RDD utilizando SparkContext.

Por favor, encontrar el código de abajo:

with open("/FileStore/tables/boringwords.txt", "r") as f_read:
  for line in f_read:
    print(line)

Esto me da el error:

FileNotFoundError                         Traceback (most recent call last)
<command-2618449717515592> in <module>
----> 1 with open("dbfs:/FileStore/tables/boringwords.txt", "r") as f_read:
      2   for line in f_read:
      3     print(line)

FileNotFoundError: [Errno 2] No such file or directory: 'dbfs:/FileStore/tables/boringwords.txt'

Donde, como, no tengo ningún problema en leer el archivo con SparkContext:

boring_words = sc.textFile("/FileStore/tables/boringwords.txt")
set(i.strip() for i in boring_words.collect())

Y como era de esperar, puedo obtener el resultado para el bloque de código de arriba:

Out[4]: {'mad',
 'mobile',
 'filename',
 'circle',
 'cookies',
 'immigration',
 'anticipated',
 'editorials',
 'review'}

Me estaba refiriendo también a la DBFS documentación aquí para entender el Archivo Local de la API de limitaciones, pero de ninguna ventaja sobre el tema. Cualquier ayuda sería muy apreciada. Gracias!

apache-spark databricks pyspark sparkapi
2021-11-24 06:16:55
3
0

El problema es que usted está usando la open función que sólo funciona con archivos locales, y no sabe nada acerca de DBFS, o de otros sistemas de archivos. Para que esto funcione, es necesario utilizar DBFS local de la API de archivo y anexar la /dbfs prefijo de ruta de acceso del archivo: /dbfs/FileStore/....:

with open("/dbfs/FileStore/tables/boringwords.txt", "r") as f_read:
  for line in f_read:
    print(line)
2021-11-24 07:56:14
0

Alternativamente, usted puede simplemente utilizar el built-in csv método:

df = spark.read.csv("dbfs:/FileStore/tables/boringwords.txt")
2021-11-24 08:51:27
0

También podemos utilizar dbutils

files = dbutils.fs.ls('/FileStore/tables/')
li = []
for fi in files: 
  print(fi.path)

Ejemplo ,

enter image description here

2021-11-24 18:26:17

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................