最近在GitHub上创建了一个新工程,收集个人在数据工程工作的小工具集合,命名为data_dragon (数据一条龙)。取这个名字的是希望这些脚本或代码能够复用,端到端地减少临时数据处理的时间。

最近因为工作上的一些变化,写作节奏有点被打乱,已经有2个月没有更新文章了。这次刚好将最近创建的小工程做个介绍。首先这个工程都是些零散的代码脚本,目前上传了3个,有Python,有Bash shell。后期,可能还有用sed写的HLR上的IMSI处理脚本,Java写的Hive UDF……总之,就是一些在实际工作中为了避免重复劳动的临时代码。

放在线上,就是为了方便以后遇到相同的问题可以重用,该工程的代码地址是https://github.com/camash/data_dragon。

工程中,每一个文件夹都是一个独立的小工具,用于解决一个独立的问题。目前,已经上传的三个脚本分别用于“快速生成Azkaban任务调度的DAG”,“hive同步数据到ES索引”以及“传输大量SFTP文件以及检查”。以下,分别对上传的三个脚本做简要介绍。

generate_azkaban_flow

作用

在Excel中配置任务依赖关系,然后使用shell脚本快速生成Azkaban的job文件。

使用方法

  • 创建文件 在Excel或者其它表格软件中,按如下结构创建
编号 任务名称 任务调用脚本 依赖
000 start_kettle
001 test /home/hadoop/test/kettle/all/test.sh resource 000_start_kettle
002 end_job /home/hadoop/test/kettle/all/end_job.sh 000_start_kettle, 001_test
  • 执行转换 复制到文本文件中,保存为tsv文件,比如test.txt。然后执行shell脚本。
bash ./gen_azkaban_flow.sh test.txt

执行之后在文件所在路径内会生成以编号_任务名称.job的Azkaban任务文件。文件数量等同于tsv文件中的行数。

ls -1 *.job000_start_kettle.job001_test.job002_end_job.job
  • job文件内容

主要包含执行项和依赖项,依赖项就是最终生成任务DAG的边。同时,这个脚本中默认会给执行命令加入执行日期参数,若不需要可以通过修改shell命令实现。

$ cat 002_end_job.job type=commanddependencies=000_start_kettle, 001_testcommand=/bin/bash /home/hadoop/test/kettle/all/end_job.sh '${azkaban.flow.start.year}${azkaban.flow.start.month}${azkaban.flow.start.day}'

使用总结

可以通过先在表格中规则的梳理任务流,避免了任务太多时直接写job文件容易遗漏的情况。梳理完成之后,使用该脚本一次性生成所有的job,秒秒钟完成。

hive_to_elasticsearch

作用

将Hive表中的数据导入到Elasticsearch的索引中。

使用方法

脚本是通过Python3编写的,因此使用Python3调用即可。

python3 hive_records_to_es.py

其中,Hive地址和Elasticsearch的地址放在connection.cfg文件中,样例如下:

[hive]host = 192.168.1.4port = 10000user = hadoop[es]es_url_1 = http://192.168.1.6:7200/es_url_2 = http://192.168.1.7:7200/es_url_3 = http://192.168.1.8:7200/

另外,表名和索引名在脚本中是静态赋值,后期需要动态传入。

scp_copy_and_check

作用

从远程SFTP同步文件指定文件夹下的所有文件至本地的指定路径。在传输前后,可以对源和目标系统上的文件数量进行校验(也可以支持其它校验和方式)。同时在传输前,对源的文件数量可以设置一定阈值,数量过少直接报异常退出程序。

使用方法

脚本是使用bash shell进行编写的,需要传入日期参数来确认文件夹的路径,参数格式为YYYYMMDD。若不传入参数,则会取执行日期做为默认参数。调用方式如下:

bash scp_log_file.sh 20200916

6工程文件夹作用_data_dragon数据工程小工具收集相关推荐

  1. 6工程文件夹作用_MCUXpresso IDE下SDK工程导入与workspace管理机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...

  2. Unity工程文件夹里的目录结构

    M 1.特殊文件夹 Assets Library ProjectSettings Editor Editor Default Resources Gizmos Plugins Resources St ...

  3. Xcode 物理文件夹与工程文件夹

    在Xcode 工程中分两种文件夹:物理文件夹(如下图蓝色文件夹),工程文件夹(如下图黄色文件夹) 物理文件夹添加方法如下: 使用 pathForResource:ofType:取出物理文件夹里面的文件 ...

  4. Linux 根目录结构,英文全称、文件夹作用

    Linux根目录下,文件夹.英文全称.文件夹作用 文件夹 英文全称 文件夹作用 /boot Boot 存放系统开机启动加载程序的Linux核心文件. /bin Binaries 存放系统命令的目录,所 ...

  5. linux文件目录:Linux中各目录(文件夹)作用详解(持续更新)

    进入Linux系统,我们就是畅游在各种目录文件中,毕竟Linux是"文件系统",文件的存放就是在目录下面,那我们了解下"Linux中各目录(文件夹)作用详解"还 ...

  6. 「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析

    「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析 前言 一.我的开发环境 二.使用 Vue CLI (Vue 脚手架)快速搭建项目 三.初始项目的目录结构 ...

  7. matlab用ls显示目录,matlab中读取某个文件夹下所有数据文件

    tearful (pingr)于2009年09月14日16:57:15 星期一)提到: 现在有个文件夹data中的数据想要批量处理,而data中有多个子文件夹,名字分别为0100 1,01002,-, ...

  8. 计算机不能再U盘新建文件夹,U盘无法建立新的文件夹?!三种小方法教你解决...

    原标题:U盘无法建立新的文件夹?!三种小方法教你解决 U盘是现代人常用的移动存储设备之一,特点是小巧易携带,容量大,因此深得用户喜欢.但是这小小的U盘一旦出现故障,就让人有点难以招架了,U盘不比电脑, ...

  9. 使用C#编写一个读取和判断股票实时成交数据的小工具

    使用vs2019预览版,.net4.5进行编写,定位为一个数据分析的小工具,对个股的每笔成交进行分析判断,目前想到的就这些功能,并且还存在很多问题,不断完善中. 本身不是专业写程序的,只是处于爱好在闲 ...

最新文章

  1. 实战:基于OpenCV进行长时间曝光(内含彩蛋)
  2. IIS7.5 中启用rest服务,Delete、Put
  3. 每一个div元素分析 php,PHP初入,div知识点整理(特效字体等元素的使用整理)...
  4. python进行linux编程,Python之函数进阶
  5. stata面板数据gmm回归_【stata】面板GMM估计
  6. 自定义View之onMeasure()
  7. boost::phoenix::switch_相关的测试程序
  8. (*长期更新)软考网络工程师学习笔记——Section 2 数字传输系统
  9. 0-5v转0-20ma和0-5v转4-20ma
  10. POJ1029 UVA158 Calendar题解
  11. 永城职业学院计算机专业分类,计算机专业师资队伍
  12. 澳大利亚:令人钦羡的高福利国家 - 老牛的日志 - 网易博客
  13. 什么是数据挖掘技术,基本概念是什么?
  14. 微型计算机的一般结构,微型计算机的基本结构
  15. php7国内,介绍php7和php5对比
  16. 做一个电商网站需要多少钱
  17. 益世科生物冲刺港交所上市:业绩持续增长,IPO前紧急“套现”
  18. Windows Shell编程-第七章.侵入Shell
  19. 神经科学界大地震!诺奖级泰斗将携团队移居中国,与蒲慕明院士强强联手
  20. MySQL数据库11——子查询语句

热门文章

  1. C# new关键字和对象类型转换(双括号、is操作符、as操作符)
  2. C#用DataTable实现Group by数据统计
  3. 《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构
  4. 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数
  5. 将链表中m-n范围内的数进行倒序
  6. NHibernate初学者指南(6):映射模型到数据库之方式二
  7. leetcode 剑指 Offer 03. 数组中重复的数字
  8. leetcode441. 排列硬币(二分查找)
  9. jQuery Ajax POST方法
  10. 谷歌cloud_通过使用Google Cloud ML大规模提供机器学习模型,我们学到了什么