我是hadoop生态系统的新手。我试图使用以下查询从CSV文件创建hive表。
CREATE EXTERNAL TABLE IF NOT EXISTS proxy_data(
date_time TIMESTAMP,time_taken INT, c_ip STRING,
sc_status INT, s_action STRING, sc_bytes INT,
cs_bytes INT, cs_method STRING, cs_uri STRING,
cs_host STRING, uri_port INT, uri_path STRING,
uri_query STRING, username STRING, auth STRING,
supplier_name STRING, content_type STRING, referer STRING,
user_agent STRING, filter_result STRING, categories STRING,
x_virus_id STRING, proxy_ip STRING
)
COMMENT 'Proxy logs'
LOCATION '/user/admin'
tblproperties ("skip.header.line.count"="1");
此查询实际上创建了一个表proxy_data,并填充了位于指定位置的csv文件中的值。
现在,我想将另一组CSV中的值附加到同一个表中(它应该跳过csv文件中的标题)。我检查了各种解决方案,但没有什么能满足我的需求。
答案 0 :(得分:0)
你可以试试这个:
hive> LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' INTO TABLE proxy_data;
答案 1 :(得分:0)
您可以向表中添加属性,该属性将跳过csv的第一行。 " skip.header.line.count" =" 1"
在你的情况下,
Alter Table proxy_data SET TBLPROPERTIES ("skip.header.line.count"="1").
答案 2 :(得分:0)
您可以遵循以下方法:
skip.header.line.count
子句。)然后,将staging table的数据加载到主表中。
create table <my_table_stg>(col1 data_type1, col2, data_type2...)
row format delimited fields terminated by ','
tblproperties ("skip.header.line.count"="1");
create table <my_table>(col1 data_type1, col2, data_type2...);
load data inpath '/file/location/my_file.csv' overwrite into table <my_table_stg>;
insert into table <my_table> select * from <my_table_stg>;
P.S:您的表语法没有row format delimited
子句。请确保按照上面的说明添加