尝试使用出现以下错误的数据框覆盖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
设置或传递任何属性或配置
如果您需要更多数据或信息,请告诉我。.