Spark Sql для чтения из секционированной таблицы Hive orc, выдающей массив из связанной исключительной ситуации - PullRequest
0 голосов
/ 27 февраля 2019

Я создал таблицу ORC в Hive с разделами. Данные загружаются в HDFS с использованием Apache pig в формате ORC.Затем создается таблица Hive.Столбцы разделов - это год, месяц и день.Когда я попытался прочитать эту таблицу с помощью spark sql, я получаю массив из связанного исключения.Ниже приведен код и сообщение об ошибке.

Код:

myTable = spark.table("testDB.employee")
myTable.count()

Ошибка:

ОШИБКА Исполнитель: Исключение в задаче 8.0 на этапе 10.0 (TID 66) java.lang.IndexOutOfBoundsException: toIndex = 47

Типы данных в этой таблице: String, timestamp & double.Когда я попытался выбрать все столбцы с помощью оператора select с запросом spark sql, я получаю исключение приведения класса, как показано ниже.

py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o536.showString,: org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задание 0 на этапе 12.0 не выполнено 1 раз, последний сбой: потерянное задание 0.0 на этапе 12.0 (TID 84, localhost, драйвер исполнителя): java.lang.ClassCastException: org.apache.hadoop.io.Text не может быть приведен к org.apache.hadoop.hive.serde2.io.TimestampWritable

После этого я попытался привести к метке времени, используя приведенный ниже код фрагмента.,Но после этого я также получаю массив из связанного исключения.

df2 = df.select('dt',unix_timestamp('dt', "yyyy-MM-dd HH:mm:ss") .cast(TimestampType()).alias("timestamp"))

1 Ответ

0 голосов
/ 25 июля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...