同时阅读带有网址的黑斑羚
JDBC:hive2://impalajdbc.data:25004 /; AUTH = noSasl
和spark sql
val rr = sparkSession.sql("SELECT item_id from someTable LIMIT 10")
它抱怨说
无法将第1列转换为long:java.lang.NumberFormatException:对于输入字符串:“item_id”[info]位于org.apache的org.apache.hive.jdbc.HiveBaseResultSet.getLong(HiveBaseResultSet.java:374)[info]。 。spark.sql.execution.datasources.jdbc.JdbcUtils $ $ $ anonfun $ makeGetter 9(JdbcUtils.scala:435)
我知道罪魁祸首是impala会返回列的标题以及结果。但是,使用Dataframe / rdd api上的map或filter很难摆脱它,因为使用这些运算符需要先解析结果
还有其他选择:我可以尝试更改hive配置以禁用返回标头,这是最后的手段。
尝试在select语句中使用where
子句来排除item_id
标头值。
示例查询:
val rr = sparkSession.sql("SELECT item_id from someTable where item_id != 'item_id' LIMIT 10")