【发布时间】:2019-07-11 17:27:09
【问题描述】:
在从 impala 阅读时使用 url 和
jdbc:hive2://impalajdbc.data:25004/;auth=noSasl
和火花 sql
val rr = sparkSession.sql("SELECT item_id from someTable LIMIT 10")
它抱怨
无法将第 1 列转换为长列:java.lang.NumberFormatException: For 输入字符串:“item_id” [info] at org.apache.hive.jdbc.HiveBaseResultSet.getLong(HiveBaseResultSet.java:374) [信息] 在 org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.$anonfun$makeGetter$9(JdbcUtils.scala:435)
我知道罪魁祸首是 impala 将列的标题与结果一起返回。但是,使用 Dataframe/rdd api 上的 map 或 filter 很难摆脱它,因为使用这些运算符需要先解析结果
还有其他选项:我可以尝试更改 hive 配置以禁用返回标头,这是最后的手段。
【问题讨论】:
-
更新:使用自定义 JdbcRdd 解决
标签: apache-spark hive impala