Как удалить заголовки, которые вызывают NumberFormatException с помощью spark sql и impala / hive - PullRequest
0 голосов
/ 18 февраля 2019

при чтении из импалы с URL-адресами, похожими на

jdbc: hive2: //impalajdbc.data: 25004 /; auth = noSasl

и spark sql

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

жалуется, что

Невозможно преобразовать столбец 1 в длинный: java.lang.NumberFormatException: для входной строки: "item_id" [info] at org.apache.hive.jdbc.HiveBaseResultSet.getLong (HiveBaseResultSet.java:374) [info] at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils $. $ Anonfun $ makeGetter $ 9 (JdbcUtils.scala: 435 *

)*1015* Я знаю, что виновником является то, что impala возвращает заголовки для столбца вместе с результатом. Однако довольно трудно избавиться от этого с помощью map или filter в Dataframe / rdd api, потому что использование этих операторов требует сначала разобрать результат

Есть и другие варианты: я могу попытаться изменить конфигурацию куста, чтобы отключить возврат заголовков, который является последним средством.

1 Ответ

0 голосов
/ 18 февраля 2019

Попробуйте использовать выражение where в своем операторе выбора, чтобы исключить значение заголовка item_id.

Пример запроса:

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