在阅读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")
我错过了什么吗?
答案 0 :(得分:0)
Spark支持配置单元语法,因此如果要插入行,可按以下步骤操作
insert into hello select t.* from (select 1, 'hello') t;