0
votes

I'm trying to run Delta Lake MERGE INTO

MERGE INTO sessions
USING updates
ON sessions.sessionId = updates.sessionId
WHEN MATCHED THEN UPDATE *
WHEN NOT MATCHED THEN INSERT *

I'm getting an SQL error

ParseException: mismatched input 'MERGE' expecting {'(', 'SELECT', 'FROM', 'ADD', 'DESC', 'WITH', 'VALUES', 'CREATE', 'TABLE', 'INSERT', 'DELETE', 'DESCRIBE', 'EXPLAIN', 'SHOW', 'USE', 'DROP', 'ALTER', 'MAP', 'SET', 'RESET', 'START', 'COMMIT', 'ROLLBACK', 'REDUCE', 'REFRESH', 'CLEAR', 'CACHE', 'UNCACHE', 'DFS', 'TRUNCATE', 'ANALYZE', 'LIST', 'REVOKE', 'GRANT', 'LOCK', 'UNLOCK', 'MSCK', 'EXPORT', 'IMPORT', 'LOAD'}(line 2, pos 0)
== SQL ==
MERGE INTO sessions
^^^
USING updates
ON sessions.sessionId = updates.sessionId
WHEN MATCHED THEN UPDATE *
WHEN NOT MATCHED THEN INSERT *
"

I am using io.delta:delta-core_2.11:0.6.1 What am I doing wrong?

Thanks

1

1 Answers

2
votes

The merge SQL support is added in Delta Lake 0.7.0. You also need to upgrade your Apache Spark to 3.0.0 and enable the integration with Apache Spark DataSourceV2 and Catalog APIs in order to use the new SQL support in Delta Lake 0.7.0. Please check instructions in the Delta Lake docs.