Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到配置单元表中,动态分区仅将第一个分区写入磁盘,而不是全部_Sql_Hadoop_Hive_Partition - Fatal编程技术网

Sql 插入到配置单元表中,动态分区仅将第一个分区写入磁盘,而不是全部

Sql 插入到配置单元表中,动态分区仅将第一个分区写入磁盘,而不是全部,sql,hadoop,hive,partition,Sql,Hadoop,Hive,Partition,我试图将数据写入配置单元表,但失败了。我在循环结束时得到一个错误,并且只有一个分区正在写入。今天是第一天 set hive.auto.convert.join=true; set hive.optimize.mapjoin.mapreduce=true; set hive.exec.dynamic.partition.mode=nonstrict; set hive.exec.dynamic.partition=true; set mapred.map.tasks = 100; Inse

我试图将数据写入配置单元表,但失败了。我在循环结束时得到一个错误,并且只有一个分区正在写入。今天是第一天

set hive.auto.convert.join=true;
set hive.optimize.mapjoin.mapreduce=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true; 
set mapred.map.tasks = 100;



Insert into table dynamic.dynamic_test_avro_v1 partition(cycle_dt)
Select date_time as CYCLE_TS, case when evar1 is not null or length(trim(evar1)) > 0 then cast(unbase64(substring(evar1,6,12)) as string) end NRNM ,
prop14 as state, evar8 as FLOW_TYPE, prop25 as KEY, pagename PAGE_NM,
partition_dt as cycle_dt from source.std_avro_v1 WHERE
(partition_dt = '2016-10-02' AND  partition_dt < '2016-10-07')
AND (
evar8='google');
设置hive.auto.convert.join=true;
设置hive.optimize.mapjoin.mapreduce=true;
设置hive.exec.dynamic.partition.mode=nonstrict;
设置hive.exec.dynamic.partition=true;
设置mapred.map.tasks=100;
插入表dynamic.dynamic\u test\u avro\u v1分区(cycle\u dt)
选择日期时间作为循环时间,当evar1不为空或长度(修剪(evar1))>0时,则强制转换(unbase64(子字符串(evar1,6,12))作为字符串)结束NRNM,
prop14作为状态,evar8作为流类型,prop25作为键,pagename PAGE\u NM,
来自source.std_avro_v1的分区作为循环,其中
(分区_dt='2016-10-02'和分区_dt<'2016-10-07')
及(
evar8='google');
我不确定这里发生了什么。我有一个日期范围设置,只将这些日期作为分区获取。

来自:

在动态分区插入中,用户可以给出部分分区规范,这意味着只需在partition子句中指定分区列名列表。列值是可选的。如果给定了分区列值,我们称之为静态分区,否则它是动态分区。每个动态分区列都有select语句中相应的输入列。这意味着动态分区创建由输入列的值决定。动态分区列必须在SELECT语句中列的最后一个指定,并按照它们在partition()子句中出现的顺序指定


因此,在您的查询中,
partition\u dt
是动态分区的值。但是,您施加了以下约束:
(partition_dt='2016-10-02'和partition_dt<'2016-10-07')
转换为
partition_dt='2016-10-02'
,并最终创建单个分区

您可能需要一系列日期:
(分区\u dt>=“2016-10-02”和分区\u dt<'2016-10-07')

来自:

在动态分区插入中,用户可以给出部分分区规范,这意味着只需在partition子句中指定分区列名列表。列值是可选的。如果给定了分区列值,我们称之为静态分区,否则它是动态分区。每个动态分区列都有select语句中相应的输入列。这意味着动态分区创建由输入列的值决定。动态分区列必须在SELECT语句中列的最后一个指定,并按照它们在partition()子句中出现的顺序指定


因此,在您的查询中,
partition\u dt
是动态分区的值。但是,您施加了以下约束:
(partition_dt='2016-10-02'和partition_dt<'2016-10-07')
转换为
partition_dt='2016-10-02'
,并最终创建单个分区


您可能需要一个日期范围:
(partition_dt>='2016-10-02'和partition_dt<'2016-10-07')

partition_dt='2016-10-02'
?它是基于日期的源表分区。但它也是目标分区,因为它是最后一列-所以您在这个查询中创建了一个分区,
partition_dt='2016-10-02'和partition_dt<'2016-10-07'
没有多大意义,因为它总是
partition_dt='2016-10-02'
是,您可能需要
partition\u dt>='2016-10-02'
partition\u dt='2016-10-02'
?它是基于日期的源表分区。但它也是目标分区,因为它是最后一列-因此您在该查询中创建了一个分区。总体而言,
partition_dt='2016-10-02'和partition_dt<'2016-10-07'
没有多大意义,因为它总是
partition_dt='2016-10-02'
是的,你可能想要
partition_dt>='2016-10-02'