Spark SQL:INSERT INTO语句语法

时间:2016-10-23 16:59:38

标签: apache-spark apache-spark-sql

在阅读Datastax docs以获得支持的Spark SQL语法时,我注意到您可以像通常那样使用INSERT语句:

INSERT INTO hello (someId,name) VALUES (1,"hello")

在Spark 2.0(Python)环境中测试它以及与Mysql数据库的连接会引发错误:

File "/home/yawn/spark-2.0.0-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/sql/utils.py", line 73, in deco
pyspark.sql.utils.ParseException: 
u'\nmismatched input \'someId\' expecting {\'(\', \'SELECT\', \'FROM\', \'VALUES\', \'TABLE\', \'INSERT\', \'MAP\', \'REDUCE\'}(line 1, pos 19)\n\n== SQL ==\nINSERT INTO hello (someId,name) VALUES (1,"hello")\n-------------------^^^\n'

但是,如果我删除显式列定义,它将按预期工作:

INSERT INTO hello VALUES (1,"hello")

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

Spark支持配置单元语法,因此如果要插入行,可按以下步骤操作

insert into hello select t.* from (select 1, 'hello') t;