Parquet表在spark與Impala間不相容問題
通過desc formatted 比對了下生成表的格式:
這裡是spark-sql下建立的parquet表格式:
SerDe Library: | org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
InputFormat: | org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
OutputFormat: | org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
這裡是Impala下建立的parquet表格式:
SerDe Library: | parquet.hive.serde.ParquetHiveSerDe
InputFormat: | parquet.hive.DeprecatedParquetInputFormat
OutputFormat: | parquet.hive.DeprecatedParquetOutputFormat
由此可知spark 和impala 的資料儲存parquet格式不一致,而導致在spark下不能正確識別。
下面這個命令是在implala-shell下執行,或者spark beline下執行。
ALTER TABLE par_crt_impala SET FILEFORMAT
INPUTFORMAT"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat"
OUTPUTFORMAT"org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat"
SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe';
修改之後則正常使用了;