来自Spark Documentation中的保存模式:
追加:将 DataFrame 保存到数据源时,如果数据/表已经
存在,DataFrame 的内容应附加到
现有数据。
因此,它符合您的预期。这是一个检查行为的玩具示例:
data_batch_1 = [("2021-04-19", "2021-04-19 01:00:01", 1.1),
("2021-04-19", "2021-04-19 13:00:00", 1.2)]
data_batch_2 = [("2021-04-19", "2021-04-19 15:00:00", 2.1),
("2021-04-19", "2021-04-19 20:00:00", 2.2)]
col_names = ["DATE", "ts", "sensor1"]
df_batch_1 = spark.createDataFrame(data_batch_1, col_names)
df_batch_2 = spark.createDataFrame(data_batch_2, col_names)
s3_path = "/tmp/67163237/"
保存批次 1
df_batch_1.write.mode("append").partitionBy("DATE").parquet(s3_path)
spark.read.parquet(s3_path).show()
+-------------------+-------+----------+
| ts|sensor1| DATE|
+-------------------+-------+----------+
|2021-04-19 01:00:01| 1.1|2021-04-19|
|2021-04-19 13:00:00| 1.2|2021-04-19|
+-------------------+-------+----------+
保存批次 2
df_batch_2.write.mode("append").partitionBy("DATE").parquet(s3_path)
spark.read.parquet(s3_path).show()
+-------------------+-------+----------+
| ts|sensor1| DATE|
+-------------------+-------+----------+
|2021-04-19 15:00:00| 2.1|2021-04-19|
|2021-04-19 01:00:01| 1.1|2021-04-19|
|2021-04-19 20:00:00| 2.2|2021-04-19|
|2021-04-19 13:00:00| 1.2|2021-04-19|
+-------------------+-------+----------+