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

mbskvtky  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(315)

将表从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>
dy2hfwbg

dy2hfwbg1#

您需要确保在创建表期间使用的名称与要导入的表中的名称匹配。它应该能解决问题。
在hive0.14之前,Parquet地板的名称是区分大小写的。你可以在这里找到细节

lnxxn5zx

lnxxn5zx2#

我也遇到过类似的问题,通过确保Hive柱和Parquet柱都是小写来修复

相关问题