[shell]shell脚本实现每天自动抽取数据插入hive表

#!/bin/bash
source /etc/profile
source ~/.bashrc

M_DATE=$(date -d'-1 day' +%m) #取系统日期前一天的月份




spark-sql -e"
insert overwrite table db.tbname 
partition(event_day='${day}')
select 
    col_name1
    ,col_name2
    ,col_name3
from
    db.tbname2
where condition
  ;"

  #touchz _SUCCESS
  line_num=`$HADOOP_HOME/bin/hadoop fs -du -s /user/warehouse/db/tbname1/event_day=$day | awk '{print $1}'`
  if [ $line_num -gt 0 ]
  then
      $HADOOP_HOME/bin/hadoop fs -touchz /user/warehouse/db/tbname1/event_day=$day/_SUCCESS
  fi

 

好的,我可以为您提供一些代码范例,用于实现自动备份Hive数据,并根据时间传参。请先确保您已经安装好了Hive客户端和hadoop。 以下是一个简单的shell脚本,用于备份Hive数据,并根据时间传参: ```shell #!/bin/bash # 设置Hive名和备份目录 table_name=$1 backup_dir=$2 # 获取当前日期和时间,作为备份文件名的一部分 current_time=$(date "+%Y-%m-%d_%H-%M-%S") # 备份Hive数据到本地目录 hive -e "INSERT OVERWRITE LOCAL DIRECTORY '${backup_dir}/${table_name}_${current_time}' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM ${table_name};" # 打包备份文件 tar -czvf ${table_name}_${current_time}.tar.gz ${backup_dir}/${table_name}_${current_time} # 删除备份目录中的原始备份文件 rm -rf ${backup_dir}/${table_name}_${current_time} # 将备份文件上传至HDFS hadoop fs -mkdir -p /user/hive/backup/${table_name} hadoop fs -put ${table_name}_${current_time}.tar.gz /user/hive/backup/${table_name} # 删除本地备份文件 rm -rf ${table_name}_${current_time}.tar.gz ``` 将以上代码保存为一个脚本文件 `backup_hive_table.sh`,并为该文件添加执行权限: ```shell chmod +x backup_hive_table.sh ``` 接着,您可以在终端中调用该脚本,并传递Hive名和备份目录作为参数。例如,如果您想备份名为 `my_table` 的Hive,并将备份文件保存在本地 `/backup` 目录下,您可以执行以下命令: ```shell ./backup_hive_table.sh my_table /backup ``` 希望以上代码范例能够帮助您实现自动备份Hive数据,并根据时间传参。如果您有任何疑问或需要进一步帮助,请随时联系我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值