杂记4

一、hive-如何从一个库的表数据迁移到另一个库的表:
1、迁移:hadoop fs -mv 源路径 目标路径;路径可通过describe formatted 表名 查看;
2、查看是否迁移:hadoop fs -ls 目标路径
3、运行MSCK REPAIR TABLE 表名,hive就会去检测这个表在hdfs上的文件,把没有写入metastore的分区信息写入metastore;
4、hive查看目标路径数据量和数据;
5、hive同步到impala :invalidate metadate 库名.表名,就可以通过impala做查询了;

二、hive键表对比默认格式和parquet格式的坑
1.建表

1.test1表默认格式
create table test1 (id STRING,name STRING,address STRING) row format delimited fields terminated by ','
2.test2使用parquet格式
create table test2 (id STRING,name STRING,address STRING) row format delimited fields terminated by ','
stored as parquet;

2.插入数据
插入有逗号的数据

insert overwrite table test1 values('1','张,三','广东,深圳')
insert overwrite table test2 values('1','张,三','广东,深圳')

3.查询结果
在这里插入图片描述

在这里插入图片描述

在测试库建与生产库同样的表时存储方式要一致,不然可能会错位,如parquet表数据到textfile表中,如果字段值含有换行符,而目标表的存储格式为textfile,会导致分割成两行记录。

三、回刷历史月份数据脚本

# 回刷历史月份数据脚本
# 设置时间
if [[ -z $1 ]]; then
datetime=`date -d "-1 days" +"%Y-%m-%d"`
else
datetime=$1
fi
echo "datetime:${datetime}"

now_ymd=`date -d "${datetime}" +"%Y%m%d"`
now_statdate=`date -d "${datetime}" +"%Y%m"`
statdate_month=202005
cur_ymd=20200501
while [ "${statdate_month}" != "${now_statdate}" ]
do
    echo "statdate_month: ${statdate_month}"
    # ... 功能代码
    cur_ymd=`date -d "${cur_ymd} next month" +"%Y%m%d"` #索引以月为步进
    statdate_month=`date -d "${cur_ymd}" +"%Y%m"` #索引年月
done

# ...功能代码

四、如果在hue的hive设置了属性,重开hue是无法复原hive属性的,如何复原?
在这里插入图片描述
在这里插入图片描述

五、Hive可以非等值连接了。
六、impala的count()对null值是不计算的。
七、重刷历史数据,以日为步进

# 回刷历史每日数据脚本
# 设置时间
if [[ -z $1 ]]; then
datetime=`date -d "-1 days" +"%Y-%m-%d"`
else
datetime=$1
fi
echo "datetime:${datetime}"

statdate=20201002 #用于回刷历史数据 `date -d "${datetime}" +"%Y%m%d"`
statdate_30_ago=`date -d "${statdate} -30 days" +"%Y%m%d"`
now_ymd=`date -d "${datetime}" +"%Y%m%d"`

while [ "${statdate}" != "${now_ymd}" ]
do
    echo "statdate: ${statdate}"
    echo "statdate_30_ago:${statdate_30_ago}"
    #功能代码
    statdate=`date -d "${statdate} next day" +"%Y%m%d"` #索引以日为步进
    statdate_30_ago=`date -d "${statdate} -30 days" +"%Y%m%d"`
    echo ""
done

echo "statdate: ${statdate}"
echo "statdate_30_ago:${statdate_30_ago}"
echo ""
#功能代码

回刷完后记得要将 statdate=date -d "${datetime}" +"%Y%m%d" 打开。
log我是通过airflow 查看的,

八、查看hive版本
$ hive
可看到在这里插入图片描述 ,版本号是3.1.1。
jps 查看 Runjar 的进程号,执行 lsof -g 进程号 | grep hive-service

九、修改历史数据满足某些条件的记录的列值。 hive 0.14以后有update实现修改列值,但是有限制,难怪没听说别人用。所以,只能通过修改脚本后,重跑的方式了。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Update在这里插入图片描述
https://blog.csdn.net/qq_39680564/article/details/101197852
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值