将表从mysql导入parquet,然后在hive中创建外部表。不知怎的,当我查询hive上的外部表时,它会将所有值显示为null。尽管镶木地板工具cat xyz。镶木地板文件正确显示了内容。我哪里做错了?
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>
您需要确保在创建表期间使用的名称与要导入的表中的名称匹配。它应该能解决问题。
在Hive 0.14之前,镶木地板的名称区分大小写。你可以在这里找到详细信息
我遇到了类似的问题,并通过确保蜂窝柱和镶木地板柱都是小写来解决