У меня есть паркетный стол в улье, который имеет дату & временные поля. Теперь я бы хотел прочитать эту таблицу из-за искры, но это не соответствует ошибке совместимости с меткой времени паркета.Spark прочитано из таблицы паркетного стола с временной отметкой
Улей версия 1.2.1 & Спарк версия 1.6.1
Исключение в потоке «главный» java.lang.UnsupportedOperationException: Паркет не поддерживает метку времени. См улья-6384 App на org.apache.hadoop.hive.ql.io.parquet.serde.ArrayWritableObjectInspector.getObjectInspector (ArrayWritableObjectInspector.java:98) App на org.apache.hadoop.hive.ql.io. parquet.serde.ArrayWritableObjectInspector. (ArrayWritableObjectInspector.java:60)
Я попробовал чтение из более чем улья, он отлично работает. Однако сбой при чтении из Spark. Вот запрос, который я пытаюсь запустить.
import org.apache.spark.sql.hive._
val sqlContext = new HiveContext(sc)
sqlContext.sql("select * from hivetablename limit 10")
Таблица улья выглядит ниже.
CREATE EXTERNAL TABLE hivetablename (col1 string, date_time timestamp, somedate date) PARTITIONED BY (load_date date)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 's3n://path'
Любые предложения или обходные пути?
Какую версию улья и искры вы используете? вы можете вставить код, который дает эту ошибку –
set spark.sql.hive.convertMetastoreParquet confuguration to false. Если установлено значение false, Spark SQL будет использовать Hive SerDe для паркетных таблиц вместо встроенной поддержки. надеюсь, это должно решить вашу проблему. –
Конфигурация Паркета может быть выполнена с использованием метода setConf в SQLContext или путем запуска команд SET key = value с использованием SQL. –