如何将aws glue文件输出写入特定名称

时间:2018-05-04 22:20:46

标签: python apache-spark pyspark etl aws-glue

我有一个aws glue python作业,它连接两个Aurora表,并以json格式写入/接收输出到s3 bucket。这项工作正如预期的那样正常。默认情况下,输出文件以此名称格式/模式“run-123456789-part-r-00000”写入s3存储桶[在hadoop集群中运行pyspark代码的场景背后,因此文件名为hadoop-like] < / p>

现在,我的问题是如何使用特定名称编写文件,例如“Customer_Transaction.json”而不是“run - *** - part ****”

我尝试转换为DataFrame,然后写为json,如下所示,但无法正常工作

customerDF.repartition(1).write.mode( “覆盖”)上传.json( “S3://bucket/aws-glue/Customer_Transaction.json”)

2 个答案:

答案 0 :(得分:0)

引擎盖下的胶水是一项火花工作。它们是火花节省文件的方式。解决方法:保存DataFrame后,raname结果文件。

火花作业范围内的类似quetins: Specifying the filename when saving a DataFrame as a CSV

答案 1 :(得分:-1)

我想我得到了解决方案。这是在我当地的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)