私はHiveに日付&のタイムスタンプフィールドを持つ寄木張りテーブルを持っています。私は今、sparkからこのテーブルを読んでみたいですが、寄木細工タイムスタンプの互換性エラーで失敗します。タイムスタンプを持つ寄木細工のハイブテーブルからの読み込み
ハイブのバージョンは1.2.1 &スパークバージョンであるスレッド「メイン」java.lang.UnsupportedOperationExceptionがで1.6.1
例外です:寄木張りのタイムスタンプをサポートしていません。 org.apache.hadoop.hive.ql.ioでorg.apache.hadoop.hive.ql.io.parquet.serde.ArrayWritableObjectInspector.getObjectInspector(ArrayWritableObjectInspector.java:98) のApp でHIVE-6384 のApp を参照してください。 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'
提案や回避策はありますか?
どのバージョンのハイブとスパークを使用していますか?あなたはこのエラーを与えるコードを貼り付けることができます –
spark.sql.hive.convertMetastoreParquetのconfugurationをfalseに設定します。 falseに設定すると、Spark SQLは組み込みサポートの代わりに寄木張りテーブル用のHive SerDeを使用します。うまくいけば、あなたの問題を解決するはずです。 –
Parquetの設定は、SQLContextのsetConfメソッドを使用するか、SQLを使用してSET key = valueコマンドを実行することによって実行できます。 –