Блок данных записывает xlsx в dbsf (файловая система блока данных) - PullRequest
0 голосов
/ 17 января 2020

Я создаю фрейм данных в блоке данных. Я вижу этот фрейм данных, нет проблем. это имя: df_MA

Теперь я хочу сохранить этот фрейм данных как файл Excel в моем DBSF, но ничего не работает

df_MA.to_excel("/dbsf/PATH/test.xlsx")
# error message 
FileNotFoundError: [Errno 2] No such file or directory: '/dbsf/PATH/test.xlsx'

Если я использую только

df_MA.to_excel("test.xlsx")
#no error message but can't find the file which is suposed to be created

Я новичок в области данных, и мне трудно понять, как работает DBSF .. спасибо за помощь

РЕДАКТИРОВАТЬ:

используя тот же код, что и вы, мне ошибка:

enter image description here

строка красного цвета выдает ошибку.

oserror errno 95 операция не поддерживается

Единственное решение, которое я нашел:

Сохраните файл в databricks/drivers

Затем переместите файл и удалите его из драйверов ..

например


  df_MA.to_excel('test.xlsx')
  shutil.copy2('test.xlsx','/dbfs/PATH/test1.xlsx')
  #copyfile(file, file_path)
  os.remove('test.xlsx') 

Я должен быть в состоянии писать или читать / ПУТЬ

enter image description here

1 Ответ

1 голос
/ 20 января 2020

В соответствии с вашим кодом, кажется, что ваш df_MA фрейм данных создается pandas в блоках данных, потому что нет функции to_excel для фрейма данных PySpark, и блоки данных не поддерживают преобразование фрейма данных PySpark в файл Excel, как показано на рисунке ниже в качестве моего эксперимента.

enter image description here

Поэтому я напрямую записываю pandas фрейм данных df в файл Excel test.xlsx в текущем рабочем каталоге, как показано на рисунке ниже.

enter image description here

Затем я попытался запустить код, подобный вашему df_MA.to_excel("/dbsf/PATH/test.xlsx"), но там проблема в том, что родительский путь должен быть /dbfs, bnot /dbsf, как показано на рисунке ниже.

enter image description here

Поэтому, когда вы пытались написать файл в несуществующий каталог PATH, он не будет работать. Как показано на моем рисунке ниже, необходимо сначала создать новый каталог с именем PATH, когда вы будете sh по пути /dbfs, он работает.

enter image description here


Обновление: я тестирую на открытие и изменение файла test.xlsx, используя openpyxl, как код и рисунок ниже.

# Load test.xlsx and modify the `A1` cell
import openpyxl
wb = openpyxl.load_workbook('/dbfs/PATH/test.xlsx')
ws = wb.active
for row in ws.iter_rows():
    print([col.value for col in row])
ws['A1']='A1'
wb.save('/dbfs/PATH/test.xlsx')

# Load its modified version and print values
wb = openpyxl.load_workbook('/dbfs/PATH/test.xlsx')
ws = wb.active
for row in ws.iter_rows():
    print([col.value for col in row])

enter image description here

Просто перезапишите файл с тем же именем.

...