脚本调度-sqoop导出分区表

业务场景:

我有一个导出商品数量的脚本,商品数量是动态变的,每天要执行好多次,进行动态更新。但是每天凌晨过去00:00的时候,经常会报错,报 文档不存在的错误 ,虽然知道 这个文件不存在,但是又不能停止它,在EMR中他是个工作流,脚本失败后后面的就不知行了,所以就弄了个简单的脚本做了个分区目录是否存在的判断

34: 20/09/18 08:12:59 ERROR tool.ExportTool: Encountered IOException running export job:
35: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://emr-header-1.clu?????????? /youxian/ads/ads_every_day_ru_ku_stock_weight/dt=2020-09-18

具体实现

先判断存放在HDFS中的Hive分区目录是否存在,在选择是否执行里面的导出计划

t=`date  +%Y-%m-%d`
hadoop fs -test -e /youxian/ads/ads_every_day_ru_ku_stock_weight/dt=${t}
if [ $? -eq 0 ] ; thenecho ${t}'日有入库商品   这里只是打印个记录 'hostip=Mysql连接
post=端口号 内网/外网
db=库名
#db=gxt.test
name=Mysql账号
password=mysql密码
#输出到Mysql中的表名
table=dept_every_day_goods_deal_user_sales_num
#昨天的时间
#t=`date -d -1day +%Y-%m-%d`
#当天
t=`date  +%Y-%m-%d`
sqoop export \
--connect jdbc:mysql://${hostip}:${post}/${db}?characterEncoding=UTF-8 \
--username  ${name} --password ${password} \
--table ${table} \
--hive-partition-key dt \
--hive-partition-value ${t} \
--export-dir /youxian/ads/ads_every_day_ru_ku_stock_weight/dt=${t} \
--input-fields-terminated-by '\001' \
--columns " dept_name, material_code,  ru_ku_stock_weight ,create_time " \
--update-mode allowinsert \
--update-key  "dept_name,material_code,  create_time  " \
-m 1elseecho ${t}'日没有入库商品'fi

诠释:

涉及的知识点:

HADOOP  提供了内置函数  判断文件是否存在 的命令

hadoop fs -test   

  1. -d 判断<path>是否是目录
  2. -e 判断<path>是否存在      ---->   返回0 存在  , 1 不存在
  3. -f 判断<path>是否是个文件
  4. -s 判断内容是否大于0bytes ,大于0为真
  5. -z 判断内容是否等于0bytes,为0真

例如 : t=`date  +%Y-%m-%d` 
hadoop fs -test -e /youxian/ads/ads_every_day_ru_ku_stock_weight/dt=${t}

这里是动态获取的时间 做测试也可以写死。

脚本调度-sqoop导出分区表-判断分区目录是否存在相关推荐

  1. sqoop导出hive分区表字段到mysql报错:Can‘t parse input data: ‘0‘

    目的: 为了保留ads(应用层)的历史数据,所以把ads层的表建成了带分区的表. 带来的问题: sqoop导出不带分区字段的列,可以正常导出: sqoop导出带分区字段的列,就报错如下: Can't ...

  2. Sqoop导出模式——全量、增量insert、更新update的介绍以及脚本示例

    背景信息 SQOOP支持直接从Hive表到RDBMS表的导出操作,也支持HDFS到RDBMS表的操作, 当前需求是从Hive中导出数据到RDBMS,有如下两种方案: Ø  从Hive表到RDBMS表的 ...

  3. linux 脚本判断一个目录不存在

    linux 脚本判断一个目录不存在 1 2 3 4 #!/bin/sh if [ ! -d /mnt/u ]; then mkdir -p /mnt/u fi 本文转自 boy461205160 51 ...

  4. sqoop导出数据|Hive|HDFS和脚本编写

    导出数据 在Sqoop中,"导出"概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做:导出,即使用export关键字. HIVE/H ...

  5. SQOOP 导出Hive数据到MySQL

    基本知识: Sqoop导出的基本用法:https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_syntax_4  的10. sqoop-exp ...

  6. hue集成mysql报错_CDH5.7Hue使用sqoop导出mysql数据报错

    Hue使用sqoop导出mysql数据报错 hadoop平台使用的是CDH5,在Hue中使用sqoop 提交任务后报错 Main class [org.apache.oozie.action.hado ...

  7. 【shell】if常用判断|if目录是否为空|判断字符串包含关系|与或

    目录 shell中[ ]和[[]]的区别 判断目录是否为空 判断字符串包含关系 if判断写成一行/命令行中用if 单引号和双引号的区别 if常用判断 作者:bandaoyu 持续更新,连接:http: ...

  8. sqoop导出orc数据至mysql_Sqoop 支持 ORC 文件格式

    ORC 介绍 ORC 文件格式是 Hive 0.11.0 版本引入的一种文件格式.ORC 的引入是为了解决其他 Hive 文件格式的局限性.使用 ORC 文件格式提升 Hive 读取.写入及处理数据的 ...

  9. Oracle数据库操作命令 导入导出数据 实用分区

    使用spool导出: 1).新建spool.sql文件 set colsep , set feedback off set heading off set trimout on spool D:\DB ...

最新文章

  1. Ubuntu环境下docker的安装
  2. AM335x(TQ335x)学习笔记——使用dtb方式启动内核
  3. java应用cpu使用率过高问题排查
  4. kafka server 参数解释
  5. WPF - 自定义标记扩展
  6. 卡巴斯基安全浏览器_一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
  7. js 将多个对象合并成一个对象
  8. 在 F5 LTM 上配置数据包过滤
  9. 腾讯云linux配置服务器配置,centos7+腾讯云服务器搭建wordpress
  10. Python 读写文本(open)
  11. 索引 | 学堂原创推文汇总-v2
  12. js原型和原型链_初识JS原型/原型链/原型继承
  13. phpnow mysql密码_使用PHPnow搭建本地PHP环境+创建MySQL数据库
  14. 通过密钥 SFTP(二)限定用户根目录
  15. myeclipse 创建 maven项目的时候出现:invalid project description 解决方法
  16. 11.8 scrum report
  17. java calendar时间计算_Java Calendar计算所在时区的时间偏移量
  18. 使用python3开发趴小说的小工具
  19. 数据分析与预测(二)——pandas 函数read_csv解析
  20. pytorch、tensorflow之生成one-hot向量

热门文章

  1. 嫦娥是白月光,高翠兰是朱砂痣,谁才是猪八戒最想娶的女人
  2. linux dhcp mac ip绑定,linux – 如何在dhcpd中通过MAC地址分配IP
  3. npm install 报错 check python checking for Python executable python2 in the PATH
  4. 离散数学_九章:关系(1)
  5. 江西外语外贸官网 仿写
  6. 航拍江西仙女湖初晴 云雾缭绕宛如仙境
  7. 计算机网络笔记---互联网的组成及三种交换方式
  8. java中这些判断空的用法,太优雅了
  9. CSS属性 – text-decoration(常用)
  10. 程序员必备的chrome插件:体验极佳的CSDN插件