[Work]—Hive常用命令及问题

本文档详述了Hive数据库中常用的命令操作,包括文件路径查看、文件大小检查、表分区修复、HDFS文件下载及批量获取数据库表的创建语句等。同时,深入解析了row_number、rank和dense_rank函数在数据排名处理上的区别。
摘要由CSDN通过智能技术生成

记录工作中Hive方面的常用命令和问题

一、常用命令

  • 1.查看文件路径
    • 进入hive客户端:dfs -ls 路径

      dfs -ls oss://xxx/xxx/xxx/dt=2020-08-04

    • 不进入hive客户端:hadoop fs -ls 或者 hdfs dfs -ls

      hadoop fs -ls oss://xxx/xxx/xxx/dt=2020-08-04

  • 2.查看文件大小
    • 进入hive客户端:dfs -du -h 路径

      dfs -du -h oss://xxx/xxx/xxx/dt=2020-08-04

    • 不进入hive客户端: hadoop fs -du -h 或者 hdfs dfs -du -h

  • 3.修复表的分区
    msck repair table table_name
  • 4.下载HDFS到客户端
    下载文件到客户端的当前路径下
    hadoop fs -get 'oss://xxx/ordm.client_event_13_0000036199.json' .
    
  • 5.批量获取数据库表的建标语句
    编写脚本:vim hive_db_table_create.sh
    #!/bin/bash
    #输入数据库
    DB=$1
    #先把表名 写入文件 
    hive -e "use $DB;show tables;" > /home/jialong.li/tmp/${DB}_tables.hql
    
    sleep 2
    
    echo "use $DB;"
    
    cat /home/jialong.li/tmp/${DB}_tables.hql | while read eachline
    
    do
        # echo "--=========== db: $DB , table: $eachline ===========" 
        # echo "--=========== db: $DB , table: $eachline ===========" >> /home/jialong.li/tmp/${DB}_table_create.hql
        # echo "--============ drop table if exists ${DB}.${eachline};" >> /home/jialong.li/tmp/${DB}_table_create.hql   
         hive -e "show create table $DB.$eachline;" >> /home/jialong.li/tmp/${DB}_table_create.hql
         echo ";" >> /home/jialong.li/tmp/${DB}_table_create.hql
         echo "msck repair table ${DB}.${eachline}; " >> /home/jialong.li/tmp/${DB}_table_create.hql
    done
    
    #sed -i 's/opay-datalake/opay-datalake-test/' /home/jialong.li/tmp/${DB}_table_create.hql                                                                                            
    
    执行脚本:./hive_db_table_create.sh test_dw_ods
    test_dw_ods_table_create.hql 就是建标语句,可以打开复制到hive执行,也可以使用hive -f在指定机器执行
    参考文章:批量获取建表语句

二、常见问题

  • 1.row_number 、rank 、dense_rank的区别
    row_number:不管排名是否有相同的,都按照顺序1,2,3……n
    rank:排名相同的名次一样,同一排名有几个,后面排名就会跳过几次
    dense_rank:排名相同的名次一样,且后面名次不跳跃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值