スパークSQLのサポートされている構文についてDatastax docsを読みながら、私はあなたがあなたのようなINSERT
ステートメントを使用することができます気づい通常んでしょう:スパークSQL:INSERT INTOステートメントの構文
INSERT INTO hello (someId,name) VALUES (1,"hello")
テストこのうちスパーク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")
何か不足していますか?
を次のようにあなたが行うことができます行を挿入したい場合は、スパークSQLはハイブSQL構文と、[言語のマニュアルDML]に基づいているので(https://でcwiki .apache.org/confluence/display/Hive/LanguageManual + DML#LanguageManualDML-Synopsis.3)for hiveは次のように述べています* "テーブルのすべての列に値を指定する必要があります。いくつかのカラムはまだサポートされていません。標準のSQLを模倣するために、ユーザが値を割り当てることを望まないカラムにはnullを指定することができます "*おそらく、spark SQLの観点からカラムを提供するのは意味がありません。 – VladoDemcak
@VladoDemcakまあ、すべての列に値を提供する必要があるかどうかは、読みやすさの観点からはわかります。とにかく、これは、Datastaxのドキュメントがその特定の情報を間違って配置したことを意味しますか? – TMichel
おそらくDatastaxのドキュメントが間違っていると思われます - [databricksのドキュメントにはこれが可能だとしか書いてありません](https://docs.databricks.com/spark/latest/spark-sql/language-manual/insert.html#) – VladoDemcak