hive按当天日期建立分区表 | 动态往日期分区插入数据

hive建立分区表,以当天日期(“2014-08-15”)作为分区依据,hql如下:

CREATE EXTERNAL TABLE IF NOT EXISTS product_sell(
category_id BIGINT,
province_id BIGINT,
product_id BIGINT,
price DOUBLE,
sell_num BIGINT
)
PARTITIONED BY (ds string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

然后以日期作为分区依据,插入数据,shell脚本如下:

#!/bin/bash
source /etc/profile;

today=$(date +%Y-%m-%d)
/usr/local/cloud/hive/bin/hive<<EOF
INSERT OVERWRITE TABLE product_sell PARTITION (ds='$today') select a.category_id, b.good_receiver_province_id as province_id, a.id as product_id, (b.sell_amount/b.sell_num) as price, b.sell_num from product a join (select si.product_id, s.good_receiver_province_id, sum(si.order_item_amount) sell_amount, sum(si.order_item_num) sell_num from so_item si join so s on (si.order_id=s.id) where si.is_gift=0 and datediff(date_sub(from_unixtime(unix_timestamp()),1), si.ds) between 0 and 6 group by s.good_receiver_province_id, si.product_id) b on (a.id=b.product_id);
EOF

这个部分难点在于hive中不知道如何调用形如shell日期变量的方式创建日期分区,mark一下!

hive按当天日期建立分区表 | 动态往日期分区插入数据

时间: 2024-10-11 22:00:44

hive按当天日期建立分区表 | 动态往日期分区插入数据的相关文章

Shell脚本执行hive语句 | hive以日期建立分区表 | linux schedule程序

#!/bin/bash source /etc/profile; ################################################## # Author: ouyangyewei # # # # Content: Combineorder Algorithm # ################################################## # change workspace to here cd / cd /home/deploy/rec

MySql存储过程动态创建表并插入数据

最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据. 具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天的日志写入. Mysql的可视化工具我们用的是navicat,相对来说还是比较好用,当然没有sqlserver 那么人性化(很多快捷键不支持,操作累赘).下面我就来说一说用navi

Oracle 动态建立分区表

由于数据太多为了加快检索 将一个表建为分区表 在数据插入是动态添加临时表 as -- Local variables here fq_dm varchar(30); p_count number; -- p_fadm number; p_sql varchar(100); begin -- Test statements here --查询zkz的所有分区 -- SELECT partition_name FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='zh

Hive静态分区表&amp;动态分区表

静态分区表: 一级分区表: CREATE TABLE order_created_partition ( orderNumber STRING , event_time STRING ) PARTITIONED BY (event_month string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; 加载数据方式一:从本地/HDFS目录加载 load data local inpath '/home/spark/software/data/o

ubuntu server下建立分区表/分区/格式化/自动挂载(转)

link:http://www.thxopen.com/linux/2014/03/30/Linux_parted.html 流程为:新建分区-->格式化分区-->挂载分区 首先弄明白分区的定义,我在网上找到MBR和GPT分区的介绍: MBR分区(主引导记录)表: 支持最大卷:2T (T; terabytes,1TB=1024GB) 分区的设限:最多4个主分区或3个主分区加一个扩展分区. GPT分区(GUID分区表)表: 支持最大卷:18EB,(E:exabytes,1EB=1024TB) 每

C 动态链表的建立,输出,删除,插入

动态链表的建立,输出,删除,插入 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct student*next; }; int n;/*n为全局变量*/ struct student *creat() { struct

ExtJS 下拉框监听事件、日期选择器监听事件、实现动态给items添加删除数据

1.下拉框 下拉框选择时,触发事件的方法: 在 Ext.form.ComboBox 组件中新增 listeners 监听事件 基本写法为:  listeners{'事件',function(){处理方法}} listeners:{ select:{ fn:function(combo,record,index) { } } }   2.日期选择器 选择日期时,值发生变化,并且在失去焦点之前触发此事件,也就是说如果此日期组件的值发生变化,而焦点并没有失去,这个事件也就不会触发.解决方法: menu

hive使用技巧(一)自动化动态分配表分区及修改hive表字段名称

Author:FuRenjie kwu 1.自动化动态分配表分区 set hive.exec.dynamic.partition.mode=nonstrict; insert overwrite table ods.fund2hundsunlg PARTITION(day) select distinct fromHostIp ,hundsunNodeIp,concat(substring(requestTime,0,10),' ', substring(requestTime,12,8)) ,

mysql建立表及表的简单操作-插入数据-删除主键-删除表-修改表的数据-删除表的数据

-- 1.使用数据库 USE ren; -- 2.建立student表 CREATE TABLE student ( sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,   -- UNSIGNED(无符号) AUTO_INCREMENT(自增) sname VARCHAR(10),    -- 只能保存10个字符 saddress VARCHAR(15)   -- 只能保存15个字符 )ENGINE=MYISAM DEFAULT CHARSET=utf8;