使用Spark Structured stream 2.1从Kafka流式传输时,partitionBy是一个字符串列(包含yyyy-mm-dd格式的日期字符串),我预计会有一个
interval27e/_spark_metadata
interval27e/interval_read_date=2010-10-27 08%3A02%3A48
interval27e/interval_read_date=2010-10-30 04%3A27%3A34
interval27e/interval_read_date=2010-11-03 02%3A22%3A13
interval27e/interval_read_date=2010-11-03 07%3A27%3A08
interval27e/interval_read_date=2010-11-14 08%3A37%3A52
interval27e/interval_read_date=2010-11-19 01%3A46%3A50
Spark每个日期附加多个目录的字符串(“08%3A02%3A48”)。
这是writeStream命令:
interval3=interval2 \
.writeStream
.format("parquet")
.option("path","/user/usera/interval27e")
.partitionBy("interval_read_date")
.trigger(processingTime='15 seconds')
.option("checkpointLocation", "/user/usera/checkpoint27e")
.start()
我没有观察到有关使用分区编写镶木地板的其他stackOverflow问题。
如何在镶嵌目录中编写分区,而不将该字符串附加到目录名?
答案 0 :(得分:1)
看起来interval_read_date
除了时间戳之外根本不是数据/类似日期的字符串。 %3A
is percent encoded :
因此您拥有以下名称:
interval_read_date=2010-10-27 08:02:48
interval_read_date=2010-10-30 04:27:34
...
请仔细检查您是否正在使用正确的数据,并在必要时进行截断或强制转换。