Problema în timp ce încerca pentru a citi un fișier text în databricks folosind Local de Fișiere API, mai degrabă decât o Scânteie API

0

Problema

Încerc să citesc un mic fișier txt care este adăugat ca un tabel implicit db pe Databricks. În timp ce încearcă să citiți fișierul prin Local de Fișiere API, am primit un FileNotFoundErrordar sunt capabil să citească același fișier ca Scânteie RDD folosind SparkContext.

Vă rugăm să găsiți codul de mai jos:

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

Acest lucru îmi dă eroare:

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'

În cazul în care ca, nu am nici o problema la citirea fișierului folosind SparkContext:

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

Și cum era de așteptat, am primit rezultatul de mai sus bloc de cod:

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

Am fost, de asemenea, referindu-se la DBFS documentație aici pentru a înțelege Local de Fișiere API limitări, dar nu duce la problema. Orice ajutor ar fi apreciat foarte mult. Multumesc!!!

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

Problema este că ai folosit open funcția care funcționează numai cu fișiere locale, și nu știe nimic despre DBFS, sau alte sisteme de fișiere. Pentru a obține acest lucru, aveți nevoie pentru a utiliza DBFS locale fișierul API și adăugați /dbfs prefix la calea de fișier: /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

Alternativ, puteți pur și simplu utiliza built-in csv metoda:

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

Alternativ, putem folosi dbutils

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

De exemplu ,

enter image description here

2021-11-24 18:26:17

În alte limbi

Această pagină este în alte limbi

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