Apache spark 捕获Spark写入操作输出的文件名

Apache spark 捕获Spark写入操作输出的文件名,apache-spark,pyspark,Apache Spark,Pyspark,如何定义一个customCsvWriter函数来捕获执行写入操作时输出的文件。这个问题使用PySpark,但也可以随意发布Scala答案 以下是默认的PySpark行为: df=spark.read.option('header',True).csv('tests/data/csvs')) 输出=df.write.parquet('tmp/out') 打印(输出)#=>无 以下是我想要的: df=spark.read.option('header',True).customCsvWriter(

如何定义一个
customCsvWriter
函数来捕获执行写入操作时输出的文件。这个问题使用PySpark,但也可以随意发布Scala答案

以下是默认的PySpark行为:

df=spark.read.option('header',True).csv('tests/data/csvs'))
输出=df.write.parquet('tmp/out')
打印(输出)#=>无
以下是我想要的:

df=spark.read.option('header',True).customCsvWriter('tests/data/csvs'))
输出=df.write.parquet('tmp/out')
打印(输出)#=>['part-00000-1efe6b94-810f-4aaa-ad53-bd58f05f4b9a-c000.snappy.拼花地板','part-00001-1efe6b94-810f-4aaa-ad53-bd58f05f4b9a-c000.snappy.拼花地板','part-00002-1efe6b94-810f-4aaa-ad53-bd58f05f4b9a-c000.snappy.拼花地板']

我可以通过S3事件通知/SQS将文件写入S3,但我更愿意使用多平台解决方案。Delta Lake将文件名输出到事务日志,因此这必须是可能的。

为什么不简单地在输出目录中列出文件?@AlexOtt-输出可能有数百万个文件,而列出文件可能是一项非常昂贵的操作。目录中可能已经存在一些文件,因此您需要像使用Structured Streaming+Trigger.Once一样维护一组检查点。可能,但我想避免这种方法。为什么不简单地在输出目录中列出文件?@AlexOtt-输出可能有数百万个文件,而列出文件可能是一项非常昂贵的操作。目录中可能已经存在一些文件,因此您需要像使用Structured Streaming+Trigger.Once一样维护一组检查点。可能,但我想避免这种方法。