gpt4 book ai didi

hadoop - 将值从文件插入到Hive上的现有表

转载 作者:行者123 更新时间:2023-12-02 18:27:27 25 4
gpt4 key购买 nike

我是hadoop生态系统的新手。我试图使用以下查询从CSV文件创建配置单元表。

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文件中存在的标题)。我检查了各种解决方案,但没有任何东西可以满足我的需求。

最佳答案

您可以采用以下方法:

  • 使用此属性创建登台表(临时表)-skip.header.line.count = 1
  • 创建具有相同架构的主表(无需在此表中使用skip.header.line.count子句)。
  • 每次有一个新文件时,都将覆盖文件加载到登台表
  • 然后,将追加登台表的数据加载到主表中。
    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>;

  • 附言:您的表格语法没有 row format delimited子句。请确保如上所示添加它

    关于hadoop - 将值从文件插入到Hive上的现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49530628/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com