我已经创建了parquet文件,现在正在尝试将其导入Impala表中。
我按照以下方式创建了表:
然后我使用以下模式将文件复制到那里:
然后当我尝试查看带有的条目时。
我得到了。
我按照以下方式创建了表:
CREATE EXTERNAL TABLE `user_daily` (
`user_id` BIGINT COMMENT 'User ID',
`master_id` BIGINT,
`walletAgency` BOOLEAN,
`zone_id` BIGINT COMMENT 'Zone ID',
`day` STRING COMMENT 'The stats are aggregated for single days',
`clicks` BIGINT COMMENT 'The number of clicks',
`impressions` BIGINT COMMENT 'The number of impressions',
`avg_position` BIGINT COMMENT 'The average position * 100',
`money` BIGINT COMMENT 'The cost of the clicks, in hellers',
`web_id` BIGINT COMMENT 'Web ID',
`discarded_clicks` BIGINT COMMENT 'Number of discarded clicks from column "clicks"',
`impression_money` BIGINT COMMENT 'The cost of the impressions, in hellers'
)
PARTITIONED BY (
year BIGINT,
month BIGINT
)
STORED AS PARQUET
LOCATION '/warehouse/impala/contextstat.db/user_daily/';
然后我使用以下模式将文件复制到那里:
parquet-tools schema user_daily/year\=2016/month\=8/part-r-00001-fd77e1cd-c824-4ebd-9328-0aca5a168d11.snappy.parquet
message spark_schema {
optional int32 user_id;
optional int32 web_id (INT_16);
optional int32 zone_id;
required int32 master_id;
required boolean walletagency;
optional int64 impressions;
optional int64 clicks;
optional int64 money;
optional int64 avg_position;
optional double impression_money;
required binary day (UTF8);
}
然后当我尝试查看带有的条目时。
SELECT * FROM user_daily;
我得到了。
File 'hdfs://.../warehouse/impala/contextstat.db/user_daily/year=2016/month=8/part-r-00000-fd77e1cd-c824-4ebd-9328-0aca5a168d11.snappy.parquet'
has an incompatible Parquet schema for column 'contextstat.user_daily.user_id'.
Column type: BIGINT, Parquet schema:
optional int32 user_id [i:0 d:1 r:0]
您知道如何解决这个问题吗?我认为BIGINT与int_32相同。我应该更改表的方案还是生成parquet文件的方式?
ERROR: AnalysisException: Unsupported logical parquet type INT_16 (primitive type is INT32) for field web_id
。 - United121int32
实例更改为int64
并删除(INT_16)
部分即可。 - Zoltan(INT_16)
部分呢?在调用parquet-tools scheme
后,它会显示在已存在的文件中。是否有一种方法可以在已存在的文件中更改它? - United121