当前位置: 首页 > 知识库问答 >
问题:

配置单元:尝试创建动态分区时发生致命错误

欧奇希
2023-03-14
    create table MY_DATA0(session_id STRING, userid BIGINT,date_time STRING, ip STRING, URL STRING ,country STRING, state STRING, city STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES 
TERMINATED BY '\n' STORED AS TEXTFILE ;

    LOAD DATA INPATH '/inputhive' OVERWRITE INTO TABLE MY_DATA0;

    create table part0(session_id STRING, userid BIGINT,date_time STRING, ip STRING, URL STRING) partitioned by (country STRING, state STRING, city STRING) 

    clustered by (userid) into 256 buckets ROW FORMAT DELIMITED FIELDS 
    TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE ;

    \insert overwrite table part0 partition(country, state, city) select session_id, userid, date_time,ip, url, country, state,city from my_data0;

我的数据集概述:

{60A191CB-B3CA-496E-B33B-0ACA551DD503},1331582487,2012-03-12 13:01:27,66.91.193.75,http://www.acme.com/SH55126545/VD55179433,美国,夏威夷豪拉

{365CC356-7822-8A42-51D2-B6396F8FC5BF},1331584835,2012-03-12 13:40:35,173.172.214.24,http://www.acme.com/SH55126545/VD55179433,美国, El Paso, Texas

当我运行最后一个插入脚本时,我得到一个错误:

java.lang.运行时异常:org.apache.hadoop.hive.ql.metadata.HiveFatalExctive:[Error 20004]:当节点试图创建太多动态分区时发生致命错误。动态分区的最大数量由hive.exec.max.dynamic.partitions和hive.exec.max.dynamic.partitions.pernode.最大设置为: 100

附言:

我设置了两个属性:

蜂箱执行官。动态隔断模式:非严格

蜂箱执行真的

共有2个答案

方宁
2023-03-14

分区列应该在选择语句中最后提到。例如:如果状态是分区列,那么“插入表t1分区(状态)从t2中选择id、name、Dept、salt、state”;这将是可行的。例如,如果我的查询是这样的“插入表t1分区(状态)从t2中选择Id、name、Dept、state”,那么分区将被创建为工资(sall)列

范侯林
2023-03-14

尝试将这些属性设置为更高的值。

SET hive.exec.max.dynamic.partitions=100000;
SET hive.exec.max.dynamic.partitions.pernode=100000;
 类似资料:
  • 这是将Spark dataframe保存为Hive中的动态分区表的后续操作。我试图在答案中使用建议,但无法在Spark 1.6.1中使用 任何推动这一进程的帮助都是感激的。 编辑:还创建了SPARK-14927

  • 我有一个配置单元表,其中一个date列上存在分区,但date列以YYYYMMDD格式存储为INT。该表还可以包含未来日期分区的数据。 现在,作为过程的一部分,我希望删除那些在处理日(位于处理日)上运行的分区。 当我编写drop分区时,比如,那么它工作正常。 考虑到我的输入将是唯一的日期格式YYYY-MM-DD和我已经删除所有分区已给出输入日期-1;如何使上述陈述奏效?

  • 当然,希望有人能帮助我创建外部配置单元分区表,方法是根据HDFS目录中的逗号分隔文件自动添加数据。我的理解(或缺乏理解)是,当您定义一个已分区的CREATE外部表并为其提供一个位置时,它应该递归地扫描/读取每个子目录,并将数据加载到新创建的已分区的外部表中。下面的内容应该会对我的烦恼提供一些更多的了解… 每个'dt='子目录都包含分隔的文件。

  • 我找不到以上两种方式有什么不同。有人能给我解释一下或者指导我正确的材料吗?

  • 添加/home/cloudera/date.jar到类路径添加资源:/home/cloudera/date.jar 请有人帮帮我,因为我是新来蜂巢的。有人能告诉我要遵循的步骤吗

  • 我有一个分区的Hive表。如果我想从这个表中创建一个spark数据帧,那么将创建多少个数据帧分区?