gpt4 book ai didi

hadoop - 如何设置动态分区,其中列键将是分区

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

所以我有一个表A和表B,其中表A的数据是从表B中插入的。
本质上,表 A 与表 B 相同,唯一的区别是表 A 有一个 date_partition 列,而表 B 没有。
表 A 模式是这样的:
身份证号码
school_bg_dt 字符串
log_on_count 整数
active_count 整数

表 B 架构是:
身份证号码
school_bg_dt 大整数
log_on_count 整数
active_count 整数
date_partition 字符串

这是我将表 B 插入表 A 的查询,其中有一个我无法弄清楚的错误:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE A PARTITION(date_partition=school_bg_dt)
SELECT ID, cast(school_bg_dt as BIGINT), log_on_count, active_count FROM table
B;

但是,我收到错误,即输入无法识别 date_partition 附近的操作。
不知道在这里做什么,请帮助...
因此设计是将每个 school_bg_dt 键作为一个分区,因为它具有许多具有该键的唯一数据。

最佳答案

来自 here :

In the dynamic partition inserts, users can give partial partition specifications, which means just specifying the list of partition column names in the PARTITION clause. The column values are optional. If a partition column value is given, we call this a static partition, otherwise it is a dynamic partition. Each dynamic partition column has a corresponding input column from the select statement. This means that the dynamic partition creation is determined by the value of the input column. The dynamic partition columns must be specified last among the columns in the SELECT statement and in the same order in which they appear in the PARTITION() clause.



所以,试试:
FROM B
INSERT OVERWRITE TABLE A PARTITION(date_partition)
SELECT ID, cast(school_bg_dt as BIGINT), log_on_count, active_count, school_bg_dt as date_partition;

另外,请注意,如果您要创建许多分区,则应更新以下 conf 设置:
  • hive.exec.max.dynamic.partitions.pernode - 最大动态数
    允许在每个 mapper/reducer 节点中创建的分区(默认 = 100)
  • hive.exec.max.dynamic.partitions - 最大动态数
    允许创建的分区总数(默认 = 1000)
  • hive.exec.max.created.files - MapReduce 作业中所有映射器/缩减器创建的 HDFS 文件的最大数量(默认 = 100000)
  • 关于hadoop - 如何设置动态分区,其中列键将是分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296343/

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