Apache spark 如何在不复制的情况下将Spark数据框插入配置单元内部表?
所以将spark dataframe直接附加到配置单元表的命令是Apache spark 如何在不复制的情况下将Spark数据框插入配置单元内部表?,apache-spark,hive,apache-spark-sql,Apache Spark,Hive,Apache Spark Sql,所以将spark dataframe直接附加到配置单元表的命令是 df.write().mode("append").saveAsTable("tableName") 但是append模式是否确保它将避免重复行? 例如: 如果行A在配置单元表中,其也在spark数据帧中 将spark数据框附加到配置单元表将导致两行 有没有办法确保追加时不会发生重复 编辑: 有两条路要走: 如所述,加载配置单元表作为spark dataframe,合并两个dataframe,删除重复项并以“overwri
df.write().mode("append").saveAsTable("tableName")
但是append模式是否确保它将避免重复行?
例如:
- 如果行A在配置单元表中,其也在spark数据帧中
- 将spark数据框附加到配置单元表将导致两行
- 如所述,加载配置单元表作为spark dataframe,合并两个dataframe,删除重复项并以“overwrite”模式写回配置单元表李>
- 其次,将配置单元表加载到临时表中,将数据帧附加到临时表中,获取不同的行,并将临时表覆盖回配置单元表
谢谢。df.write无法满足您的任何要求。很抱歉也就是说,您可能会得到2行。将spark数据框附加到配置单元表将导致两行A 确保追加时不会发生重复
.dropDuplicates()
(或)
窗口功能
从复制的
记录
示例:
union\u df=df.union(df1)
union\u df.dropDuplicates()
(或)使用窗口功能
union_df.write().mode(“append”).saveAsTable(“newtableName”)
)
然后最后从新表中选择数据覆盖
现有配置单元表。
示例:
spark.sql(“插入覆盖表。选择*自”)
spark.sql(“拖放表”)