sky*_* CC 2 hdfs apache-spark spark-structured-streaming
我正在使用Spark结构化流处理来自流数据源的数据,并且正在使用文件接收器。数据将在处理后放入hdfs。
我有一个问题,输出文件是这样的part-00012-8d701427-8289-41d7-9b4d-04c5d882664d-c000.txt。这使我无法在上一个小时获取文件输出。
是否可以将输出文件自定义为timestamp_xxx或类似的内容?或者,我可以按批次输出到不同的路径吗?
您无法更改已保存文件的名称。但是,您可以更改其保存位置的文件夹结构。用于partitionBy()在数据集中的指定列之后对数据进行分区,在这种情况下,可能需要关注年,月,日和小时:
df.writeStream
.format("parquet") // can be "orc", "json", "csv", etc.
.option("path", "/path/to/save/")
.partitionBy("year", "month", "day", "hour")
.start()
Run Code Online (Sandbox Code Playgroud)
这将从以下开始创建一个文件夹结构path,如下所示:
year=2018
|
|--> month=06
| |
| |--> day=26
| | |
| | |--> hour=10
| | |--> hour=11
| | |--> ...
| |
| |--> day=27
| | |
| | |--> ...
Run Code Online (Sandbox Code Playgroud)
当然,根据可用内容,可以使用其他列对文件进行分区。
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |