【问题标题】:How to import data from a hdfs table into nested partitioned table in hive?如何将数据从 hdfs 表导入 hive 中的嵌套分区表?
【发布时间】:2019-10-07 07:32:16
【问题描述】:

我在 hive 中创建了一个嵌套的分区表。 但是我不知道如何往表中插入数据。

我试过了 插入覆盖表方法。

在蜂巢中,

create external table accounts_nested(
first_name string, last_name string, zipcode string)
partitioned by (state string, areacode string) 
row format delimited 
fields terminated by ',' 
location '/loudacre/accounts_nested';

然后,

insert overwrite table accounts_nested(
partition(areacode)
select first_name, last_name, zipcode, state, areacode from accounts;

我在终端上看不到任何错误,但我看不到我插入的数据。

我想查看 accounts_nested 表中的数据。

【问题讨论】:

    标签: hive data-partitioning


    【解决方案1】:

    您可以使用动态分区设置下一个参数。

    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nonstrict;
    

    接下来,有一个有效的代码示例:

    create table temp.accounts           (                                                                                                                                                                                     
    first_name                  string
    ,last_name                  string
    ,zipcode                  string
    )
    partitioned by (areacode string)
    stored as parquet location '/temp.db/accounts' tblproperties("parquet.compression=SNAPPY")
    ;
    
    insert into temp.accounts partition(areacode='0') values
    ('David','David','00')
    ,('Ellen', 'Ellen','00')
    ,('David','David','00')
    ,('David', 'David','00');
    
    create external table temp.accounts_nested           (                                                                                                                                                                                     
    first_name                  string
    ,last_name                  string
    ,zipcode                  string
    )
    partitioned by (areacode string)
    stored as parquet location '/temp.db/accounts_nested' tblproperties("parquet.compression=SNAPPY")
    ;
    
    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nonstrict;
    
    insert overwrite table temp.accounts_nested 
    partition(areacode)
    select first_name, last_name, zipcode, areacode from temp.accounts;
    

    输出:

    select * from temp.accounts_nested;
    +-----------------------------+----------------------------+--------------------------+---------------------------+--+
    | accounts_nested.first_name  | accounts_nested.last_name  | accounts_nested.zipcode  | accounts_nested.areacode  |
    +-----------------------------+----------------------------+--------------------------+---------------------------+--+
    | David                       | David                      | 00                       | 0                         |
    | Ellen                       | Ellen                      | 00                       | 0                         |
    | David                       | David                      | 00                       | 0                         |
    | David                       | David                      | 00                       | 0                         |
    +-----------------------------+----------------------------+--------------------------+---------------------------+--+
    

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 2015-09-13
      • 2019-10-07
      相关资源
      最近更新 更多