在使用像
这样的网址从黑斑羚中阅读时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.hive.jdbc.HiveBaseResultSet.getLong(HiveBaseResultSet.java:374) [info]位于 org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils $。$ anonfun $ makeGetter $ 9(JdbcUtils.scala:435)
我知道罪魁祸首是impala返回该列的标头和结果。但是,使用Dataframe / rdd api上的map或filter很难摆脱它,因为使用这些运算符需要先解析结果
还有其他选择:我可以尝试更改配置单元配置以禁止返回标头,这是不得已的选择。
答案 0 :(得分:0)
尝试在select语句中使用where
子句以排除 item_id
标头值。
示例查询:
val rr = sparkSession.sql("SELECT item_id from someTable where item_id != 'item_id' LIMIT 10")