调度工具(ETL+任务流)

调度工具(ETL+任务流),第1张

kettle是一个ETL工具,ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)。

kettle中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

所以他的重心是用于数据

oozie是一个工作流,Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。

oozie工作流中是有数据流动的,但是重心是在于工作流的定义。

二者虽然都有相关功能及数据的流动,但是其实用途是不一样的。

查看帮助

列举出所有linux上的数据库

列举出所有Window上的数据库

查看数据库下的所有表

(1)确定mysql服务启动正常

查询控制端口和查询进程来确定,一下两种办法可以确认mysql是否在启动状态

办法1:查询端口

MySQL监控的TCP的3306端口,如果显示3306,证明MySQL服务在运行中

办法二:查询进程

可以看见mysql的进程

没有指定数据导入到哪个目录,默认是/user/root/表名

原因:

如果表中有主键,m的值可以设置大于1的值;如果没有主键只能将m值设置成为1;或者要将m值大于1,需要使用--split-by指定一个字段

设置了-m 1 说明只有一个maptask执行数据导入,默认是4个maptask执行导入 *** 作,但是必须指定一个列来作为划分依据

导入数据到指定目录

在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。使用参数 --target-dir来指定导出目的地,使用参数—delete-target-dir来判断导出目录是否存在,如果存在就删掉

查询导入

提示:must contain '$CONDITIONS' in WHERE clause。

where id <=1 匹配条件

$CONDITIONS:传递作用。

如果 query 后使用的是双引号,则 $CONDITIONS前必须加转义符,防止 shell 识别为自己的变量。

--query时不能使用--table一起使用

需要指定--target-dir路径

导入到hdfs指定目录并指定要求

数据导出储存方式(数据存储文件格式---( textfil parquet)--as-textfileImports data as plain text (default)--as-parquetfile Imports data to Parquet Files)

导入表数据子集到HDFS

sqoop导入blob数据到hive

对于CLOB,如xml文本,sqoop可以迁移到Hive表,对应字段存储为字符类型。

对于BLOB,如jpg,sqoop无法直接迁移到Hive表,只能先迁移到HDFS路径,然后再使用Hive命令加载到Hive表。迁移到HDFS后BLOB字段存储为16进制形式。

213导入关系表到Hive

第一步:导入需要的jar包

将我们mysql表当中的数据直接导入到hive表中的话,我们需要将hive的一个叫做hive-exec-110-cdh5140jar的jar包拷贝到sqoop的lib目录下

第二步:开始导入

导入关系表到hive并自动创建hive表

们也可以通过命令来将我们的mysql的表直接导入到hive表当中去

通过这个命令,我们可以直接将我们mysql表当中的数据以及表结构一起倒入到hive当中去

--incremental 增量模式。

append id 是获取一个某一列的某个值。

lastmodified “2016-12-15 15:47:35” 获取某个时间后修改的所有数据

-append 附加模式

-merge-key id 合并模式

--check-column 用来指定一些列,可以去指定多个列;通常的是指定主键id

--last -value 从哪个值开始增量

==注意:增量导入的时候,一定不能加参数--delete-target-dir 否则会报错==

第一种增量导入方式(不常用)

1Append方式

使用场景:有个订单表,里面每个订单有一个唯一标识的自增列id,在关系型数据库中以主键的形式存在。之前已经将id在0-1000之间的编号的订单导入到HDFS 中;如果在产生新的订单,此时我们只需指定incremental参数为append,--last-value参数为1000即可,表示只从id大于1000后开始导入。

(1)创建一个MySQL表

(2)创建一个hive表(表结构与mysql一致)

注意:

append 模式不支持写入到hive表中

2lastModify方式

此方式要求原有表有time字段,它能指定一个时间戳,让sqoop把该时间戳之后的数据导入到HDFS;因为后续订单可能状体会变化,变化后time字段时间戳也会变化,此时sqoop依然会将相同状态更改后的订单导入HDFS,当然我们可以只当merge-key参数为order-id,表示将后续新的记录和原有记录合并。

# 将时间列大于等于阈值的数据增量导入HDFS

使用 lastmodified 方式导入数据,要指定增量数据是要 --append(追加)还是要 --merge-key(合并)last-value 指定的值是会包含于增量导入的数据中。

第二种增量导入方式(推荐)

==通过where条件选取数据更加精准==

215从RDBMS到HBase

会报错

原因:sqoop146 只支持 HBase101 之前的版本的自动创建 HBase 表的功能。

解决方案:手动创建 HBase 表

导出前,目标表必须存在与目标数据库中

默认 *** 作是将文件中的数据使用insert语句插入到表中

数据是在HDFS当中的如下目录/sqoop/emp,数据内容如下

第一步:创建MySQL表

第二步:执行导出命令

通过export来实现数据的导出,将hdfs的数据导出到mysql当中去

全量导出

增量导出

更新导出

总结:

参数介绍

--update-key 后面也可以接多个关键字列名,可以使用逗号隔开,Sqoop将会匹配多个关键字后再执行更新 *** 作。

--export-dir 参数配合--table或者--call参数使用,指定了HDFS上需要将数据导入到MySQL中的文件集目录。

--update-mode updateonly和allowinsert。 默认模式为updateonly,如果指定--update-mode模式为allowinsert,可以将目标数据库中原来不存在的数据也导入到数据库表中。即将存在的数据更新,不存在数据插入。

组合测试及说明

1、当指定update-key,且关系型数据库表存在主键时:

A、allowinsert模式时,为更新目标数据库表存的内容,并且原来不存在的数据也导入到数据库表;

B、updateonly模式时,为更新目标数据库表存的内容,并且原来不存在的数据也不导入到数据库表;

2、当指定update-key,且关系型数据库表不存在主键时:

A、allowinsert模式时,为全部数据追加导入到数据库表;

B、updateonly模式时,为更新目标数据库表存的内容,并且原来不存在的数据也不导入到数据库表;

3、当不指定update-key,且关系型数据库表存在主键时:

A、allowinsert模式时,报主键冲突,数据无变化;

B、updateonly模式时,报主键冲突,数据无变化;

4、当不指定update-key,且关系型数据库表不存在主键时:

A、allowinsert模式时,为全部数据追加导入到数据库表;

B、updateonly模式时,为全部数据追加导入到数据库表;

实际案例:

(1)mysql批量导入hive

使用shell脚本:

笔者目前用sqoop把mysql数据导入到Hive中,最后实现命令行导入,sqoop版本147,实现如下

最后需要把这个导入搞成job,每天定时去跑,实现数据的自动化增量导入,sqoop支持job的管理,可以把导入创建成job重复去跑,并且它会在metastore中记录增值,每次执行增量导入之前去查询

创建job命令如下

创建完job就可以去执行它了

sqoop job --exec users

可以把该指令设为Linux定时任务,或者用Azkaban定时去执行它

hive导出到MySQL时,date类型数据发生变化?

问题原因:时区设置问题,date -R查看服务器时间,show VARIABLES LIKE "%time_zone"查看Mysql时间,system并不表示中国的标准时间,要将时间设置为东八区

(1):对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。

(2):功能:

两者均可以调度mapreduce,pig,java,脚本工作流任务;

两者均可以定时执行工作流任务;

(3):工作流定义:

Azkaban使用Properties文件定义工作流;

Oozie使用XML文件定义工作流;

(4):工作流传参:

Azkaban支持直接传参,例如${input};

Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)};

(5):定时执行:

Azkaban的定时执行任务是基于时间的;

Oozie的定时执行任务基于时间和输入数据;

(6):资源管理:

Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等 *** 作;

Oozie暂无严格的权限控制;

(7):工作流执行:

Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点);

Oozie作为工作流服务器运行,支持多用户和多工作流;

(8):工作流管理:

Azkaban支持浏览器以及ajax方式 *** 作工作流;

Oozie支持命令行、>

其实国内外有不少可视化工具还是相当好用的,比如FineBI、Echart、Tableau等等。借这个话题我盘点了一下国内外的可视化工具,涉及数据分析、软件分析、图像处理等等几乎所有可视化相关领域,大家可以Mark起来当做参考。

1、FineBI

简洁明了的数据分析工具,优点是零代码可视化、可视化图表丰富,只需要拖拖拽拽就可以完成十分炫酷的可视化效果,拥有数据整合、可视化数据处理、探索性分析、数据挖掘、可视化分析报告等功能,更重要的是个人版免费。

2、Infogram

十分强大的图表制作工具,本身带有十分丰富多样的模板,如果个人不满意还可以手动设计,优点也是不需要代码编程,缺点就是只能用来制作图表,更加炫酷的可视化效果实现起来比较困难。

3、Easelly

几年前开始流行的信息图制作软件,界面简洁、 *** 作简便、精美,而且用户只需要登录Easelly官方网站即可开始进行信息图制作,在网站上你可以尽情分享和查找素材,当然有些是不免费的。

4、Color Brewer

强大的配色工具,你在这里面几乎可以找到任何你想要的颜色,它本身也是一个绘图系统,拥有很多配色模板,可以当做一个小工具收藏,配合其他可视化工具使用。

5、ChartBlocks

英国的一家公司开发的制作统计图表的线上工具,省去在Excel软件里制作图表的繁复,让图表更加多样化,无需专业的软件技能就可以轻松制作漂亮的图表,但是功能不多。

6、Visually

在线图表神器,这家网站以丰富的信息图资源而著称,很多用户乐意把自己制作的信息图上传到网站中与他人分享,最近好像爆出消息还能帮助人们制作信息图,不知道免不免费。

7、Nuvi

一款非常简单好用的信息图形生成器,拥有好几百个模版,当然,如果你喜欢,也可以不用模版

8、Dygraphs

用的比较少,网站上资源也几乎没有,在国内属于小圈冷门的可视化工具,但功能其实是很强大的,不想费力找资源的建议选择其他的工具。

9、ECharts

ECharts就不用说了,搞数据可视化的99%都知道,是一款商业级数据图表,纯JavaScript的图标库,缺点是要代码 *** 作,小白上手难度很高,适合码农这样的数据人。

10、Cytoscape

适合做一些文章里的网格图、散点图、结构图、思维图,写论文、报告等场景下非常好用,适合大学生或者搞科研的人。

11、图表秀

适合做PPT时做一些好看的图表,图表制作功能比较强大,但是我记得导出高清的时候要收费,只能导标清图比较坑吧。

12、BDP

BDP个人版是国内海致公司旗下的数据可视化分析产品(BDP也有商业版,针对企业用户,但我非商业版用户,所以就不多说了),有多数据整合、数据合表处理、可视化分析等数据功能,总体来看数据功能还是非常全面的,虽然不免费但是成本低一些

13、xdatainsight

国产的一站式敏捷可视化工具,以前还比较好用,现在基本没人用了

14、Tagul

国外一款词云制作神器,免费的小工具,非常好用

15、Tagxedo

跟上面的tagul一样,也是词云制作工具,而且是在线制作网站,但是需要**

16、Wordle

很老的信息可视化工具了,主要也是制造词云的,当年也是大名鼎鼎,但是也有很多缺点,字体颜色没有意义、可视化还很初级等

17、WordItOut

词语云一键生成网站,非常方便,但是没办法根据频率调整大小,功能比较粗糙

18、ToCloud

ToCloud是一个在线免费标签云生成器,你可以设置词的长度和频率,还能提取短语,是一个比较好的标签云工具之一利用词频生成词云,你可以快速了解页面优化了某些单词

19、图悦

这款国内的在线词频分析工具,在长文本自动分词并制作词云方面还是很出众的,而且也容易上手,还可以自定义定制图形模板:标准、微信、地图等,切换自如,用起来体验很不错

20、语义分析系统

主要是用于分析文章中的各种参数,包括频率等内容,百度的语义分析系统功能还是挺不错的

21、腾讯文智

腾讯的中文语义网站,分析语句、篇章等,教学类平台

22、polymaps

PolyMaps是一个地图库,主要面向数据可视化用户,在地图风格化方面有独到之处,类似CSS样式表的选择器,用来做动态地图的

23、nodebox

可视化进阶神器,NodeBox是OS X上创建二维图形和可视化的应用程序,你需要了解Python程序,NodeBox与Processing类似,但是没有Processing的互动功能

24、processing

堪比python的编程语言,能够实现几乎所有的可视化效果,语句规范上不如python ,但是比较容易上手

25、processingjs

跟上面的一样,是一门可视化编程语言,ProcessingJS是它的JavaScript实现,使用HTML5的canvas,配合现代浏览器来实现web客户端的可视化技术

26、Tangle

Tangle是个用来探索、Play和查看文档更新的交互式库,既是图表,又是互动图形用户界面的小程序

27、FF chartwell

一款自动生成分析图的黑科技字体,字体很多

28、SAS Visual Analytics

SAS可视化分析是一款擅长做交互式可视化分析的产品,同时它同样也可以创建出一些很好的可视化图表,不过比较笨拙,不灵活

29、数字冰雹

国内专门做可视化的,主要是大屏,面向企业而不是个人

30、Data-Driven Documents

简称D3,是一个很神奇的基于Javascript的在网页上实现数据可视化的工具,不过现在已经不更新了,缺点是要学的东西太多,HTML、编程都得掌握才行

31、leafletjs

做全屏地图比较方便,同样是需要掌握编程基础,优点是有手机端

32、Crossfilter

Crossfilter是一个数据计算模型,能够很好地结合DCJS进行数据解析绘图,属于数理类工具

33、openlayers

OpenLayers作为业内使用最为广泛的地图引擎之一,已被各大GIS厂商和广大WebGIS二次开发者采用,入门难度极高

34、wolframalpha

数学开发软件,同时也可以做数理计算可视化,属于专业性质的工具

35、visme5

Visme为用户提供30万张高清、6500种图标、750多种图表模板以及120多种字体

36、databoard

制作仪表板的,关注数据可视化本身,更多地关注利用可视化技术,高效,批判性地监控数据

37、googlecharts

文档和帮助信息丰富的 Google Charts 对于刚刚入门 Java 绘图的人来说是极佳的选择。它的文档里到处都是带注释的代码和逐步的讲解,可以直接用来把 HTML5 / SVG 图标嵌入到你的网页中。

38、timeline

以时间轴的形式进行可视化,别有一番风味

39、FusionCharts

FusionCharts 支持 vanilla Java、jQuery、Angular 等一系列高人气的库和框架。它内置90多种图表和超过1000种地图,相比 Google Charts 和 MetricsGraphics 要完整得多

40、envisionjs

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型

41、Sigma

Sigma 有着自己独特的定位,那就是图模型的绘制。它基于 Canvas 和 WebGL 开发并提供了公开的 API,所以你可以在 GitHub 上找到社区贡献的许多插件

42dcjs

dcjs 是一个开源的 Java 绘图库。它非常适合用来创建交互式的仪表盘(Dashboard),图表之间是有联系的,所以当你与其中一个部分进行交互时,其他部分都会做出实时的反馈

以上就是关于调度工具(ETL+任务流)全部的内容,包括:调度工具(ETL+任务流)、金蝶专业版账套自动备份名称是#、数据分析可视化工具推荐等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10169597.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存