2017-05-13 82 views
0

失敗我試圖將數據插入到卡桑德拉表星火SQL如下:然而簡單的插入語句與org.apache.spark.sql.catalyst.parser.ParseException

String query = "CREATE TEMPORARY TABLE my_table USING org.apache.spark.sql.cassandra OPTIONS (table \"my_table\",keyspace \"my_keyspace\", pushdown \"true\")"; 
       spark.sparkSession.sql(query); 
       spark.sparkSession 
           .sql("INSERT INTO my_keyspace.my_table (column0, column1) VALUES ('value0', 'value1'); 

,它失敗,以下異常: ê

xception in thread "main" org.apache.spark.sql.catalyst.parser.ParseException: 
mismatched input 'column0' expecting {'(', 'SELECT', 'FROM', 'VALUES', 'TABLE', 'INSERT', 'MAP', 'REDUCE'}(line 1, pos 33) 

我試了一下沒有列名和它的工作。 我的意思是插入一些列的數據,而不是全部。

回答

1

Spark SQL不使用與CQL相同的語法,它們是不同的語言。檢查HiveQL參考以獲取更多信息。

一個警告,通過SparkSql進行單行插入將非常緩慢。它用於大型多記錄(百萬)插入。

+0

謝謝拉斯。我使用HiveQL格式並能夠插入表格。但是,我仍然有一個問題:如果一個表有4列,我只需要將數據插入其中三個(包括鍵),我該怎麼做?目前出現以下錯誤:無法插入到表未知,因爲列數不同:需要4列,但查詢有3列 –

+0

您將不得不插入一個行結構我相信,SparkSQL實際上不是爲這樣做個別插入.... – RussS

+0

旁白評論,卡桑德拉CQL是一個很好的替代我的情況;其中需要插入\更新單個行。但是,您需要深入瞭解@ Cassandra批處理 –