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

yqyhoc1h  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(261)

当你从 Impala 那里读到
jdbc:hive2://impalajdbc。data:25004/;身份验证=NOASL
和spark sql

val rr = sparkSession.sql("SELECT item_id from someTable LIMIT 10")

它抱怨说
无法将列1转换为long:java.lang.numberformatexception:对于输入字符串:“item\u id”[info],位于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/rddapi上使用map或filter很难消除这个问题,因为使用这些操作符需要首先解析结果
还有其他的options:i can 尝试更改配置单元配置以禁用返回头,这是最后的手段。

3yhwsihp

3yhwsihp1#

尝试使用 where 要排除的select语句中的子句 item_id 标题值。
示例查询:

val rr = sparkSession.sql("SELECT item_id from someTable where item_id != 'item_id' LIMIT 10")

相关问题