2016-09-29 2 views
0

У меня есть паркетный стол в улье, который имеет дату & временные поля. Теперь я бы хотел прочитать эту таблицу из-за искры, но это не соответствует ошибке совместимости с меткой времени паркета.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' 

Любые предложения или обходные пути?

+0

Какую версию улья и искры вы используете? вы можете вставить код, который дает эту ошибку –

+0

set spark.sql.hive.convertMetastoreParquet confuguration to false. Если установлено значение false, Spark SQL будет использовать Hive SerDe для паркетных таблиц вместо встроенной поддержки. надеюсь, это должно решить вашу проблему. –

+0

Конфигурация Паркета может быть выполнена с использованием метода setConf в SQLContext или путем запуска команд SET key = value с использованием SQL. –

ответ

1

Простенькая проверка, пожалуйста, посмотрите, к какой версии улья относится ваша Искра? Убедитесь, что это не относится к более старой версии Hive (< = Hive 0.13).

+0

Правильно, метафора, который она внутренне относится к 0.13.1. Я попытался изменить его на более новую версию (0.14.0, 1.2.1), однако теперь она терпит неудачу с другой ошибкой. - Исключение в потоке "main" java.lang.NoSuchMethodException: org.apache.hadoop.hive.conf.HiveConf.getTimeVar (org.apache.hadoop.hive.conf.HiveConf $ ConfVars, java.util.concurrent.TimeUnit) – Akarsh

+0

Я попытался создать тестовый кластер с последней версией улья с Spark 1.6, и он отлично работал. Проблема, похоже, полностью связана с более старыми версиями метастара улья. – Akarsh

+0

Привет, Акаш, Какую версию улья вы использовали? – user2814799