Итеративное перемещение нескольких файлов в Pyspark из списка

#azure #databricks #azure-data-lake

Вопрос:

Я хочу переместить несколько файлов один за другим, развернув их, объединив со счетчиком в Pyspark в хранилище озера данных Azure.Ниже приведен код, но я не могу выполнить эту команду итеративно. он просто перемещает один файл из 20 файлов деталей.

 import os
cnt = 0 
file_list = [file.path for file in dbutils.fs.ls("Soure_Path") 
  if os.path.basename(file.path).startswith("part-")]

for i in file_list:
 cnt = cnt  1
 dbutils.fs.mv(i, "Target_Path"   "Filename_"   str(cnt)   ".csv")
 

Любая помощь будет признательна.

Спасибо

Комментарии:

1. Это похоже на код python..где вы используете pyspark

2. Я использую код в базах данных, независимо от того, как он работает, я в порядке, будь то pyspark или python.

Ответ №1:

Ваш код отлично сработал для меня, и я смог переименовать и переместить файлы в целевую папку.

Дважды проверьте, есть ли у вас более 1 файла, который начинается с имени файла «часть«.

Ввод:

введите описание изображения здесь

 import os
cnt = 0 

file_list = [file.path for file in dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/Input/") 
  if os.path.basename(file.path).startswith("part-")]
#print(file_list)

for i in file_list:
cnt = cnt  1
dbutils.fs.mv(i, "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/output/"   "Filename_"   str(cnt)   ".csv")
 

введите описание изображения здесь

Выход:

введите описание изображения здесь

Комментарии:

1. Да, это отлично работает для одного файла деталей, но я хочу перемещать 20 файлов деталей в цикле один за другим, а этого не происходит

2. Я попытался переместить больше файла that1 (см. Мои скриншоты ввода и вывода) с помощью этого кода и добился успеха. Разве это не то, чего вы ожидали? Также не могли бы вы поделиться образцом ваших имен файлов?

3. У меня есть несколько файлов деталей в приведенном ниже формате, но с моим кодом перемещается только последний файл из списка. Имена файлов следующие: часть-00000-tid-xxx, часть-00001-tid-гггг, часть-00002-zzzz