将表从mysql导入parquet,然后在hive中创建外部表。不知何故,当我查询配置单元上的外部表时,它会将所有值显示为null。尽管parquet tools cat xyz.parquet文件正确地显示了内容。我在哪里犯错?
sqoop import --connect jdbc:mysql://quickstart.cloudera:3306/retail_db \
--username root --password cloudera \
--table order_items --split-by page_id \
--target-dir hdfs:/user/cloudera/proj/order_items \
--compress --compression-codec snappy \
--as-parquetfile \
--num-mappers 1
Create external table hiveorderitems_par
(ord_item_id int,
ord_item_ord_id int,
ord_item_prod_id int,
ord_item_quantity int,
ord_item_subtotal float,
order_item_prod_price float)
row format SERDE 'parquet.hive.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT "parquet.hive.DeprecatedParquetInputFormat"
OUTPUTFORMAT "parquet.hive.DeprecatedParquetOutputFormat"
location "/user/cloudera/proj/order_items";
hive> select * from hiveorderitems_par;
NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
Time taken: 0.225 seconds, Fetched: 172198 row(s)
hive>
2条答案
按热度按时间dy2hfwbg1#
您需要确保在创建表期间使用的名称与要导入的表中的名称匹配。它应该能解决问题。
在hive0.14之前,Parquet地板的名称是区分大小写的。你可以在这里找到细节
lnxxn5zx2#
我也遇到过类似的问题,通过确保Hive柱和Parquet柱都是小写来修复