Apache spark Spark结构化流媒体自定义分区目录名
我正在将一个流式作业(Kafka主题->AWS S3拼花文件)从Kafka Connect移植到Spark结构化流式作业 我按年/月/日对数据进行分区 代码非常简单:Apache spark Spark结构化流媒体自定义分区目录名,apache-spark,spark-structured-streaming,spark-streaming-kafka,Apache Spark,Spark Structured Streaming,Spark Streaming Kafka,我正在将一个流式作业(Kafka主题->AWS S3拼花文件)从Kafka Connect移植到Spark结构化流式作业 我按年/月/日对数据进行分区 代码非常简单: df.withColumn("year", functions.date_format(col("createdAt"), "yyyy")) .withColumn("month", functions.date_for
df.withColumn("year", functions.date_format(col("createdAt"), "yyyy"))
.withColumn("month", functions.date_format(col("createdAt"), "MM"))
.withColumn("day", functions.date_format(col("createdAt"), "dd"))
.writeStream()
.trigger(processingTime='15 seconds')
.outputMode(OutputMode.Append())
.format("parquet")
.option("checkpointLocation", "/some/checkpoint/directory/")
.option("path", "/some/directory/")
.option("truncate", "false")
.partitionBy("year", "month", "day")
.start()
.awaitTermination();
输出文件位于以下目录中(如预期):
问题:
有没有办法自定义输出目录名?我需要它
/s3-bucket/some/directory/2021/01/02/
出于向后兼容性的原因。否,无法将输出目录名称自定义为Spark结构化流媒体应用程序中提到的格式
分区基于特定列的值,如果在目录路径中没有它们的列名,那么它们的值属于哪个列就不明确了。您需要编写一个单独的应用程序,将这些目录转换为所需的格式。否,无法将输出目录名称自定义为您在Spark结构化流媒体应用程序中提到的格式 分区基于特定列的值,如果在目录路径中没有它们的列名,那么它们的值属于哪个列就不明确了。您需要编写一个单独的应用程序,将这些目录转换为所需的格式。Kafka Connect可以(而且可能应该)使用
year=2021/month=01/day=02
格式编写,那么Spark添加了什么好处呢?Kafka Connect可以(也可能应该)使用year=2021/month=01/day=02
格式编写,那么Spark增加了什么好处呢?
/s3-bucket/some/directory/2021/01/02/