Как записать вывод файла склейки aws под конкретное имя - PullRequest
0 голосов
/ 05 мая 2018

У меня есть работа с python-кодом aws, которая объединяет две таблицы Aurora и записывает / выводит вывод в корзину s3 в формате json. Работа работает нормально, как и ожидалось. По умолчанию выходной файл записывается в корзину s3 в следующем формате / шаблоне «run-123456789-part-r-00000» [за кулисами находится исполняемый код pyspark в кластере hadoop, поэтому имя файла похоже на hadoop]

Теперь у меня вопрос, как написать файл с определенным именем, например, «Customer_Transaction.json» вместо «run - *** - part ****»

Я попытался преобразовать в DataFrame, а затем написать как json, как показано ниже, но не сработало

customerDF.repartition (1) .write.mode ( "перезаписать") .json ( "s3: //bucket/aws-glue/Customer_Transaction.json")

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Я думаю, что получил решение. Вот фрагмент кода, который работал в моей локальной среде hadoop-spark. Нужно проверить в AWS Glue

Path = sc._gateway.jvm.org.apache.hadoop.fs.Path
FileSystem = sc._gateway.jvm.org.apache.hadoop.fs.FileSystem
FileStatus = sc._gateway.jvm.org.apache.hadoop.fs.FileStatus

fs = FileSystem.get(sc._jsc.hadoopConfiguration())
srcpath = Path("/user/cloudera/IMG_5252.mov")
dstpath = Path("/user/cloudera/IMG_5252_123.mov")
if(fs.exists(srcpath) == False):
    print("Input path does not exists")
else:
    #print("Path exists")
    srcpath.rename(srcpath,dstpath)
0 голосов
/ 05 мая 2018

Клей под капотом - искорка. И именно так, как искра сохраняет файлы. Обходной путь: после того, как вы сохранили DataFrame, переименовали полученный файл.

похожих кетинов в области искровых работ: Указание имени файла при сохранении DataFrame в виде CSV

...