Question tout en essayant de lire un fichier texte dans databricks à l'aide de Fichiers Local de l'API plutôt que de l'Étincelle de l'API

0

La question

Je suis en train de lire un petit fichier txt qui est ajouté comme un tableau de la valeur par défaut db sur Databricks. Tout en essayant de lire le fichier par Fichier Local de l'API, je reçois un FileNotFoundErrormais je suis capable de lire le même fichier que l'Étincelle RDD à l'aide de SparkContext.

Vous trouverez le code ci-dessous:

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

Cela me donne l'erreur:

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'

D'où aussi, je n'ai aucun problème de lecture du fichier en utilisant SparkContext:

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

Et comme prévu, je obtenir le résultat ci-dessus par le bloc de code:

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

Je faisait aussi référence à la DBFS documentation ici pour comprendre le Fichier Local de l'API de limitations, mais de pas de plomb sur la question. Toute aide serait grandement appréciée. Merci!

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

Le problème, c'est que vous êtes à l'aide de la open fonction qui ne fonctionne qu'avec des fichiers locaux, et ne sais rien à propos de DBFS, ou d'autres systèmes de fichiers. Pour obtenir ce travail, vous devez utiliser DBFS fichier local de l'API et ajouter le /dbfs préfixe de chemin d'accès au fichier: /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

Sinon, vous pouvez simplement utiliser le haut-csv méthode:

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

Sinon, nous pouvons utiliser dbutils

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

Exemple ,

enter image description here

2021-11-24 18:26:17

Dans d'autres langues

Cette page est dans d'autres langues

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