1. 程式人生 > >Parquet表在spark與Impala間不相容問題

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';

修改之後則正常使用了;