#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