INSERT OVERWRITE语句中的列列表规范

时间:2018-11-28 10:48:15

标签: apache-spark hive pyspark apache-spark-sql pyspark-sql

尝试使用出现以下错误的数据框覆盖Spark(Pyspark)中具有特定列的Hive表时

pyspark.sql.utils.ParseException: u"\nmismatched input 'col1' expecting {'(', 'SELECT', 'FROM', 'VALUES', 'TABLE', 'INSERT', 'MAP', 'REDUCE'}(line 1, pos 36)\n\n== SQL ==\ninsert OVERWRITE table DB.TableName (Col1, Col2, Col3) select Col1, Col2, Col3 FROM dataframe\n------------------------------------^^^\n"

基于https://issues.apache.org/jira/browse/HIVE-9481,在 INSERT OVERWRITE 中仍然不支持列列表,因此在没有覆盖关键字的情况下尝试运行仍然会给我同样的错误。

sparkSession.sql("insert into table DB.TableName (Col1, Col2, Col3) select Col1, Col2, Col3 FROM dataframe")
  

注意:当没有指定的列列表时,上面的方法可以正常工作   指定,并且表之间的列匹配。

但是通过 Hive Terminal 尝试相同的操作还是可以的。

INSERT INTO TABLE DB.TableName (Col1, Col2, Col3) select Col1, Col2, Col3 from DB.TableName2;

是否应该通过Spark-Submit设置或传递任何属性或配置

如果您需要更多数据或信息,请告诉我。.

0 个答案:

没有答案