在hive上建表与普通分区表创建方法一样;

 1 CREATE  TABLE `dwa_m_user_association_circle`(
 2   `device_number` string,
 3   `oppo_number` string,
 4   `prov_id_oppo` string,
 5   `area_id_oppo` string,
 6   `dealer_oppo` string,
 7   `short_call_nums` bigint,
 8   `long3_call_nums` bigint,
 9   `long5_call_nums` bigint,
10   `long10_call_nums` bigint,
11   `short_total_nums` bigint,
12   `long3_total_nums` bigint,
13   `long5_total_nums` bigint,
14   `long10_total_nums` bigint,
15   `area_id` string)
16 PARTITIONED BY (
17   `month_id` string,
18   `prov_id` string,
19   `dealer` string)
20 ROW FORMAT DELIMITED
21   FIELDS TERMINATED BY '|'
22   NULL DEFINED AS ''
23 STORED AS INPUTFORMAT
24   'org.apache.hadoop.mapred.TextInputFormat'
25 OUTPUTFORMAT
26   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
27 LOCATION
28   'hdfs://beh/user/hive/warehouse/all_ana_pro.db/dwa_m_user_association_circle'
29 TBLPROPERTIES (
30   'numPartitions'='248',
31   'numFiles'='648',
32   'transient_lastDdlTime'='1542952067',
33   'totalSize'='247584222644',
34   'numRows'='0',
35   'rawDataSize'='0')

在shell脚本中,需设置的参数:

set hive.exec.dynamic.partition=true;                     #开启动态分区,默认是false
set hive.exec.dynamic.partition.mode=nostrict;      #开启允许所有分区都是动态的,否则必须要有静态分区才能使用。

set hive.exec.max.created.files=1000000;             #允许创建的最大文件数,当分区是2个或三个分区时,文件会被分成很多小文件,该设置就是将文件的最大数目设成100w;

 1 insert overwrite table ALL_ANA_PRO.dwa_m_user_association_circle  PARTITION (month_id=${v_month},prov_id,dealer)
 2 select device_number,
 3         oppo_number  ,
 4         prov_id_oppo ,
 5         area_id_oppo ,
 6         dealer_oppo ,
 7         short_call_nums,
 8         long3_call_nums,
 9         long5_call_nums,
10         long10_call_nums,
11         sum(short_call_nums) over(distribute by device_number)  short_total_nums,
12         sum(long3_call_nums ) over(distribute by device_number) long3_total_nums,
13         sum(long5_call_nums) over(distribute by  device_number) long5_total_nums,
14         sum(long10_call_nums) over(distribute by device_number) long10_total_nums,
15         area_id      ,
16         prov_id      ,
17         dealer
18 from
19         (SELECT device_number,
20                 prov_id      ,
21                 area_id      ,
22                 dealer       ,
23                 oppo_number  ,
24                 prov_id_oppo ,
25                 area_id_oppo ,
26                 dealer_oppo  ,
27                 sum(case when t.bill_times < 60 then 1 else 0 end ) short_call_nums,
28                 sum(case when t.bill_times >180 then 1 else 0 end ) long3_call_nums,
29                 sum(case when t.bill_times >300 then 1 else 0 end ) long5_call_nums,
30                 sum(case when t.bill_times >600 then 1 else 0 end ) long10_call_nums
31         FROM ( SELECT prov_id      ,
32                       area_id      ,
33                       device_number,
34                       0 dealer     ,
35                       prov_id_oppo ,
36                       area_id_oppo ,
37                       oppo_number  ,
38                       dealer_oppo  ,
39                       bill_times
40         FROM   ALL_ANA_PRO.DWA_M_CALL_RING_BASE t
41         WHERE  month_id = '${v_month}'
42         AND    ticket_type = 1
43         AND    dealer_oppo > -1
44         UNION ALL
45         SELECT prov_id_oppo prov_id      ,
46               area_id_oppo area_id      ,
47               oppo_number device_number ,
48               dealer_oppo dealer        ,
49               prov_id prov_id_oppo      ,
50               area_id area_id_oppo      ,
51               device_number oppo_number ,
52               0 dealer_oppo             ,
53               bill_times
54         FROM   ALL_ANA_PRO.DWA_M_CALL_RING_BASE t
55         WHERE  month_id = '${v_month}'
56         AND    ticket_type = 1
57         AND    dealer_oppo > -1
58            ) t
59         GROUP BY
60               device_number,
61               prov_id      ,
62               area_id      ,
63               dealer       ,
64               oppo_number  ,
65               prov_id_oppo ,
66               area_id_oppo ,
67               dealer_oppo
68         ) t;

这里,需要说明的是,向目标表插数:

insert overwrite table ALL_ANA_PRO.dwa_m_user_association_circle  PARTITION (month_id=${v_month},prov_id,dealer)
其中select语句中动态分区prov_id,dealer两个字段一般在最后面;

转载于:https://www.cnblogs.com/xiao02fang/p/10007008.html

shell脚本中向hive动态分区插入数据相关推荐

  1. hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解

    1.创建一个单一字段分区表 hive>  create table dpartition(id int ,name string ) partitioned by(ct string  ); 2 ...

  2. hive之动态分区插入数据及其参数配置

    hive使用动态分区插入数据详解 往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低.因为hive是批处理系统,所以hiv ...

  3. shell脚本中写hive的sql语句

    2.3 shell脚本中写hive语句 2.3.1 test.sh脚本内容 #!/bin/bash analysis_date=$1 #开始执行方法 #/opt/hive-2.3.5/bin/hive ...

  4. Spark 调用 hive使用动态分区插入数据

    spark 调用sql插入hive 失败 ,执行语句如下 spark.sql("INSERT INTO default.test_table_partition partition(prov ...

  5. Impala动态分区插入数据慢

    文章目录 一.背景分析 二.Impala分区 三.操作步骤 四.结果分析 五.主机配置 一.背景分析 有近20年的广告数据,需要对外提供查询分析服务(对数据进行Ad-Hoc式查询,Ad-Hoc:即席查 ...

  6. hive动态分区shell_Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  7. 【Hive】动态分区插入

    使用动态分区插入数据时,无需指定分区键值,系统根据插入的数据,自动分配分区. 动态分区需注意以下几点: 需有一个同构的普通表做为源表: 分区键值和源表字段之间是根据位置来判断的,而不是根据命名来匹配的 ...

  8. Hive动态分区和分桶

    Hive动态分区和分桶 1. Hive动态分区和分桶 1.Hive动态分区 1.hive的动态分区介绍 2.hive的动态分区配置 3.hive动态分区语法 2.Hive分桶 1.Hive分桶的介绍 ...

  9. shell脚本中编写SQL中 以传参(${accdate})的方式 动态:求 前12个月的日期和求 前一周(7天的日期)

    shell脚本中 编写SQL中 以传参(${accdate})的方式 动态 求 前12个月的日期 CAST(CAST(DATE_FORMAT(DATE_SUB(from_unixtime(unix_t ...

最新文章

  1. 清理恶意插件提高上网速度
  2. oracle 11g EM停止后无法启动
  3. SpringBoot中使用类型安全的配置来注入大量自定义属性
  4. 根据这博客复习,我收到了BAT等大厂的技术岗offer
  5. 广东人大常委会党组会议强调:要加快人工智能等领域的相关立法工作。【Python】
  6. 大数据学习笔记34:Hive - 数据库与表操作
  7. 【Foreign】字串变化 [DP]
  8. 郑继明等《数值分析》习题解答
  9. IP/TCP IP分组的交付与转发
  10. 通过AFNetworking获取服务器时间
  11. 输出结果 配置_用单端仪表放大器实现全差分输出
  12. spoj COT COT2
  13. php正则表达式. 123,php正则表达式 - 路人甲123的个人页面 - OSCHINA - 中文开源技术交流社区...
  14. I/O——Spring cache abstraction
  15. 一本笔记,看懂《未来简史》!
  16. Numpy的tile函数
  17. 学习OpenCV:滤镜系列(8)——素描
  18. mysql数据库建库建表
  19. 茴字的四种写法——浅谈移动前端适配
  20. Win7系统英文输入法不见了找回的方法

热门文章

  1. Java容器坐标起点_Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点...
  2. 问题之mybatis-plus中的TableField、Tableld的区别
  3. [python进阶]11接口:从协议到抽象基类
  4. Java 之HashSet、LinkedHashSet、TreeSet比较
  5. shell编程系列20--文本处理三剑客之awk常用选项
  6. CMDB功能分析与实现方案
  7. javascript 动态创建表格
  8. DB级buffer与IO 查看
  9. subclipse用法
  10. CentOS 5.5下搭建部署独立SVN服务器全程详解