在Spark SQL中更新查询

ZMa*_*lin 9 apache-spark apache-spark-sql

我想知道我可以在sparksql中使用更新查询,就像:

sqlContext.sql("update users set name = '*' where name is null")
Run Code Online (Sandbox Code Playgroud)

我收到了错误:

org.apache.spark.sql.AnalysisException: 
Unsupported language features in query:update users set name = '*' where name is null
Run Code Online (Sandbox Code Playgroud)

如果sparksql不支持更新查询或我是否正确编写代码?

Pra*_*kla 13

Spark SQL尚不支持UPDATE语句.

UPDATE自hive版本0.14起,Hive已经开始支持.但即使使用Hive,它仅支持那些支持事务的表的更新/删除,它在hive文档中提到.

请参阅databricks论坛中的答案,确认Spark SQL不支持UPDATES/DELETES,因为它不支持事务.如果我们认为,支持随机更新对于大数据中的大多数存储格式来说非常复杂.它需要扫描大文件,更新特定记录并重写可能的TB数据.这不是正常的SQL.

  • Spark项目中有一个打开的票证,用于改进对Hive事务表的支持(即支持更新的Hive表)https://issues.apache.org/jira/browse/SPARK-15348 (2认同)