我创建了一个配置单元表,如下所示:
create table parqtab(id int, name char(30), city char(30))
partitioned by (country char(30))
row format delimited
fields terminated by ','
stored as parquet
location '/home/hive/practice';
并加载了以下数据:
3,Bobby,London
4,Sunny,Amsterdam
使用load命令:
load data local inpath '/home/cloudera/Desktop/hid' into table parqtab partition(country='abcd');
当我从parqtab查询select*时,它给出了以下错误:
Failed with exception java.io.IOException:java.lang.RuntimeException:
hdfs://quickstart.cloudera:8020/home/hive/practice/country=abcd/hid is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [111, 114, 101, 10]
Time taken: 0.227 seconds
我知道这不是正确的方式来查询数据存储在Parquet格式。但我不知道怎么做。有谁能告诉我我在这里犯了什么错误以及如何正确地查询这个表?
2条答案
按热度按时间ltskdhd11#
正如@am\u hawk所建议的,如果你有csv,那么你应该简单地使用
STORED AS TEXTFILE
在create表中。如下所示:这个错误清楚地表明它找不到任何Parquet文件。
如果您真的需要parquet,那么您可以使用下面的spark将您的配置单元数据写入parquet文件,并按照@am\u hawk在回答中的建议在其上创建一个配置单元架构:
7kjnsjlb2#
不知道你是如何加载数据的,但如果你有一个csv,就把它放在hdfs上。在以文本形式存储的目录上创建外部表。创建您的Parquet表,您可以做一个插入,然后hive将结果数据集存储为parquet。