Parquet文件在配置单元中显示空值

时间:2018-08-07 15:26:01

标签: hive parquet

将表从mysql导入到镶木地板,然后在配置单元中创建外部表。不知何故,当我在蜂巢上查询外部表时,它将所有值显示为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 个答案:

答案 0 :(得分:2)

您需要确保在表创建过程中使用的名称与您要导入的表中的名称匹配。应该可以解决问题。

在Hive 0.14之前,实木复合地板名称区分大小写。您可以找到详细信息here

答案 1 :(得分:1)

我遇到了类似的问题,并通过确保配置单元列和实木复合地板列均使用小写字母来解决