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

我有一个 aws 胶水 python 作业,它连接两个 Aurora 表并将输出作为 json 格式写入/接收到 s3 存储桶。这项工作按预期工作正常。默认情况下,输出文件以这种名称格式/模式“run-123456789-part-r-00000”写入 s3 存储桶 [在后台运行 pyspark 代码在 hadoop 集群中,因此文件名类似于 hadoop]

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

我尝试转换为 DataFrame,然后写为 json,如下所示,但没有用

customerDF.repartition(1).write.mode("overwrite").json("s3://bucket/aws-glue/Customer_Transaction.json")

stack overflow How to write aws glue file output to a specific name
原文答案

答案:

作者头像

引擎盖下的胶水是一项火花工作。这就是 spark 保存文件的方式。解决方法:保存 DataFrame 后,raname 生成文件。

spark 工作范围内的类似 quetins: Specifying the filename when saving a DataFrame as a CSV

作者头像

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