如何使用spark sql和impala / hive删除导致NumberFormatException的标头

问题描述 投票:0回答:1

同时阅读带有网址的黑斑羚

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配置以禁用返回标头,这是最后的手段。

apache-spark hive impala
1个回答
0
投票

尝试在select语句中使用where子句来排除item_id标头值。

示例查询:

val rr = sparkSession.sql("SELECT item_id from someTable where item_id != 'item_id' LIMIT 10")
© www.soinside.com 2019 - 2024. All rights reserved.