при чтении из импалы с 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 в длинный: 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, потому что использование этих операторов требует сначала разобрать результат
Есть и другие варианты: я могу попытаться изменить конфигурацию куста, чтобы отключить возврат заголовков, который является последним средством.
Попробуйте использовать выражение where в своем операторе выбора, чтобы исключить значение заголовка item_id.
where
item_id
Пример запроса:
val rr = sparkSession.sql("SELECT item_id from someTable where item_id != 'item_id' LIMIT 10")