流入三角洲湖泊并更新表格

时间:2019-09-03 17:44:44

标签: csv apache-spark spark-streaming delta-lake

我有一个从s3到三角洲的流作业,我的输入路径目录包含一个“ data.csv”文件(我使用*来检测正确的csv文件)和一些其他数据文件。 s3中的“ data.csv”文件每天都会被替换,尽管在大多数情况下,新的“ data.csv”将包含完全相同的内容,但是偶尔它会发生变化,我希望我的流媒体和写作工作能够抓住这一点更改。例如,我的“ data.csv”现在可能看起来像这样:

|id|location|status|
|1 | A      |ON    |
|2 | A      |OFF   |
|3 | B      |ON    |

随着时间的流逝,该表可能会发生如下变化:

|id|location|status|
|1 | A      |OFF   |
|2 | A      |OFF   |
|3 | A      |ON    |

我希望我的增量表得到相应的更新,这是我现在正在使用的代码,在这种情况下,“ append” outputMode()不起作用,并且我认为我不能使用“ complete”因为我不想要聚合。有人可以告诉我是否有办法实现这一目标?

inputPath = "/file_path/*data.csv"

eventsDF = (
  spark
    .readStream
    .schema(schema)
    .option("header", "true")
    .option("maxFilesPerTrigger", 1) 
    .csv(inputPath)
)

writePath = "write_path"
checkpointPath = writePath + "/_checkpoint"

deltaStreamingQuery = (eventsDF
  .writeStream
  .format("delta")
  .option("checkpointLocation", checkpointPath)
  .outputMode("append")
  .queryName("stream_1")
  .start(writePath)
)

0 个答案:

没有答案