Я создал таблицу 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"))