欢迎投稿

今日深度:

hive表数据导入到hive表,

hive表数据导入到hive表,


最近在做项目交接,是一个计算任务。由于需要比对数据并行。就新建了几个hive表和以前老数据表结构保持一致,新表名。

但是有 将近两年的数据,需要导到新表里。由于数据在hive 是根据dt 时间分区的,用sql导起来很麻烦。所以写了个脚本跑。

hive 其实就是在hdfs上建了一个文件而已
例如 db app; table user; dt 日期分区
就可以在文件路径上找到/app.db/user/dt=2017-01-13/xxx.txt
其中xxx.txt 就是
当然不一定是txt 什么都有可能 也有没后缀的。

use app;
select * from user where dt='2017-01-13';

查出来的数据了。
所以我们可以根据这个文件路径来写脚本导数据了

#!/usr/bin/env bash
declare -i i=1
while ((i<=500))
do
DATE=`date -d i${i} 'day'  +%Y%m%d`
DT_DATE=`date -d i${i} 'day'  +%Y-%m-%d`
database='app'
click_table_name='app_cpc_union_click_2017'
order_table_name='app_cpc_union_order_2017'
porder_table_name='app_cpc_union_order_expect_2017'

CLICK_INPUT=/user/jd_ad/app.db/app_cpc_union_click/dt=${DT_DATE}/cpc_union_click.${DATE}.txt
ORDER_INPUT=/user/jd_ad/app.db/app_cpc_union_order/dt=${DT_DATE}/cpc_union_order.${DATE}.txt
PORDER_INPUT=/user/jd_ad/app.db/app_cpc_union_order_expect/dt=${DT_DATE}/cpc_union_porder.${DATE}.txt


CLICK_OUT_PUT=/user/jd_ad/union_db/app.db/tmp
ORDER_OUT_PUT=/user/jd_ad/union_db/app.db/tmp
PORDER_OUT_PUT=/user/jd_ad/union_db/app.db/tmp


LOAD_CLICK_INPUT=${CLICK_OUT_PUT}/cpc_union_click.${DATE}.txt
LOAD_ORDER_INPUT=${ORDER_OUT_PUT}/cpc_union_order.${DATE}.txt
LOAD_PORDER_INPUT=${PORDER_OUT_PUT}/cpc_union_porder.${DATE}.txt


hadoop fs -cp ${CLICK_INPUT} ${CLICK_OUT_PUT}
hadoop fs -cp ${ORDER_INPUT} ${ORDER_OUT_PUT}
hadoop fs -cp ${PORDER_INPUT} ${PORDER_OUT_PUT}

if [ $? -ne 0 ]; then
    echo  "${DATE_DT}" "cp files faile"
    exit 11
fi

hive -e "USE $database;
load data inpath '${LOAD_CLICK_INPUT}' overwrite into table ${click_table_name} partition(dt='${DT_DATE}');
load data inpath '${LOAD_ORDER_INPUT}' overwrite into table ${order_table_name} partition(dt='${DT_DATE}');
load data inpath '${LOAD_PORDER_INPUT}' overwrite into table ${porder_table_name} partition(dt='${DT_DATE}');"

if [ $? -ne 0 ]; then
    echo  "${DATE_DT}" "load files to hive  faile"
    exit 1
fi

i++;
done

小弟才疏学浅,大牛勿喷

www.htsjk.Com true http://www.htsjk.com/hive/32679.html NewsArticle hive表数据导入到hive表, 最近在做项目交接,是一个计算任务。由于需要比对数据并行。就新建了几个hive表和以前老数据表结构保持一致,新表名。 但是有 将近两年的数据,需要导到...
相关文章
    暂无相关文章
评论暂时关闭