嗨,我是stackoverflow的新手。 我想将一个csv文件加载到配置单元表中。 我使用以下方法创建了蜂巢表:
create table database1.table1(......) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
我还使用以下方式将数据加载到表中:
LOAD DATA INPATH .... OVERWRITE INTO TABLE database1.table1;
但是当我运行它时:
select distinct col1 from table1;
我从其他列中获取值以及 col1 中的值。
据我说,数据没有在蜂巢表中正确加载(即按列)。
请帮助我。
答案 0 :(得分:0)
您可以通过对属于HDFS中此表的文件进行sum(level = 1)
来检查此情况,并查看是否有任何记录缺少该列的值。
cat
如果您不知道此HDFS路径,则可以通过在Hive中运行以下查询来获取它。
hdfs dfs -cat <hdfs_path/file>
在上述查询的结果中查找单词LOCATION,即可获取HDFS路径。
提示:您可以将文件保存到本地,然后将数据加载到以逗号为分隔符的excel工作表中,看看是否发现任何行缺少值。
要将文件从HDFS获取到本地:SHOW CREATE TABLE database1.table1;
答案 1 :(得分:0)
是的,数据没有在配置单元表中正确加载(即,按列)。您将从其他列中获取值以及col1中的值,这意味着整个行值都将存储/加载到第1列中。
用于创建表的完整语句没有给出问题。所以我用下面的DDL语句创建表。
create table table1 (
date_received string,
Product varchar(100),
Sub_product string,
Issue string,
Sub_issue string,
Consumer_complaint_narrative string,
Company_public_response string,
Company string,
State string,
ZIP_code string,
Tags string,
Consumer_consent_provided string,
Submitted_via string,
Date_sent_to_company string,
Company_response_to_consumer string,
Timely_response varchar(3),
Consumer_disputed string,
Complaint_ID bigint
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with SERDEPROPERTIES ( "separatorChar"=",","skip.header.line.count"="1")
stored as textfile;
使用以下语句加载数据
load data inpath '/user/test/Complaints2months.csv' into table table1;
在我的本地进行了验证,并正在正确加载数据。希望这能解决您的问题。
注释: