火花结构流:镶木地板分区名称唯一性

时间:2017-12-25 04:08:38

标签: python apache-spark spark-streaming

使用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问题。

如何在镶嵌目录中编写分区,而不将该字符串附加到目录名?

1 个答案:

答案 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
...

请仔细检查您是否正在使用正确的数据,并在必要时进行截断或强制转换。