我有一个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”)
答案 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)