Kou*_*dra 8 sql merge apache-spark-sql pyspark
怎么可以有问题(pyspark)sql MERGE INTO语句可以实现.我有两个表,我使用createOrReplaceTempView选项将表放入临时视图中.然后我尝试在这两个临时视图上使用MERGE INTO语句.但它失败了.原因可能是SPARK SQL不支持MERGE.有人可以提示如何在pyspark中以编程方式实现简单的MERGE INTO SQL等效语句(如下所示).
MERGE INTO events
USING updates
ON events.eventId = updates.eventId
WHEN MATCHED THEN
UPDATE SET
events.data = updates.data
WHEN NOT MATCHED
THEN INSERT (date, eventId, data) VALUES (date, eventId, data)
Run Code Online (Sandbox Code Playgroud)
合并不直接支持,但如果我们可以覆盖完整的表,那么您可以遵循该方法。
hiveContext.sql("select * from events").registerTempTable("temp_events")
hiveContext.sql("select * from updates").registerTempTable("temp_updates")
hiveContext("""
select
case when b.eventId is null then a.date else b.date as date,
case when b.eventId is null then a.eventId else b.eventId end as eventId,
case when b.eventId is null then a.data else b.data as data
from
temp_events a
full outer join
temp_updates b
on a.eventId=b.eventId
""").registerTempTable("FinalData")
hiveContext.sql("INSERT OVERWRITE TABLE table_name select * from FinalData")
Run Code Online (Sandbox Code Playgroud)
使用这种情况,我们要确保数据在新集中是否可用,然后我们将采用这些值,否则我们将采用旧值。
请检查该解决方案是否适合您。
谢谢,马努