• Python开发Kettle大数据ETL,这回事要上线的了。前期准备kettle任务,本地阶段。 老规矩,交代一下业务场景,因为所有的框架和技术组件都一定要基于需求,解决实际问题,否则那就是闭门造车,没有...



    Python开发Kettle做大数据ETL,这回事要上线的了。前期准备kettle任务,本地阶段。



    老规矩,交代一下业务场景,因为所有的框架和技术组件都一定要基于需求,解决实际问题,否则那就是闭门造车,没有丝毫意义。

    应用场景​介绍。

    这回,我们记录下来了,从整体架构上来说,我们出现了一种同步情况,当前台页面访问页面时,出现了数据集合为空:

     移除点击此处添加图片说明文字

    可以看到,今天是13号,6月13号,我们需要跑12号的数据,却没有,问题就出现在当我们跑这块python脚本做任务调度的时候,出现了表数据还没有跑过来,会跑空表,但是表结构都有的,字段和数据结构都有,并不会报错的,请不要疑惑。那么你又要问,为什么不校验为空,那带你看看这个任务调度吧,

     移除点击此处添加图片说明文字

    ​是不是挺复杂的,这还不算啥,当时开发是我们大数据经理开发的,现在如我所说,他走了,我要顶上来,也不要抱怨了,当时没做的事情,我们现在可以做了。就像我把他的studio做restful给推翻了一样,但是kettle目前不推翻,因为,如果全部写mapreduce的话,估计,要累翻了。不过,之前我的老大的上一任大数据经理,带领的团队就是全部靠代码完成这些工作的,没有用任何开源集成技术,王经理上任后就整合了kettle,不知道下一任来了会做怎样的改变。

    闲言少说,直接开发了。还是那样,先把系统时间开发好:

     移除点击此处添加图片说明文字

    ​接着开发业务表,从hive的日活跃用户表转移到库:

     移除点击此处添加图片说明文字

    ​ 请注意这里的id=id,这将触发事物,决定是否更新和插入,如果id一致,说明需要update。

     移除点击此处添加图片说明文字

    ​注意这里使用了很多udf函数,当数据库的函数不够用时,我们往往开发udf,或者udaf,熟悉大数据的同学应该清楚,如果不熟悉也无妨,一般是用java编写的函数方法,那稍后,我们可以去看一下怎么写udf,然后怎么发布到数据库引用里,在后期我们都要尝试的。

    业务清楚了,接下来就是整合了,写一个job:

     移除点击此处添加图片说明文字

    ​start不定时,

     移除点击此处添加图片说明文字

    ​然后创建转换:

     移除点击此处添加图片说明文字

    ​邮箱设置也看一下吧,

     移除点击此处添加图片说明文字

    然后可以跑了:

     移除点击此处添加图片说明文字

    ​到目前为止,这些都是在本地先开发,可以看到,hive跑的很慢的,正在跑着在,我们能做的,就是等。

     移除点击此处添加图片说明文字

    ​之前被我删掉的测试库数据(几乎和生产数据一模一样)约有2万多条,交给hive了,而且还有函数拼装。然后看一下,应该就有了。

     移除点击此处添加图片说明文字

    ​并且,邮件也已经发送过来了:

     移除点击此处添加图片说明文字

    到这里,我们虽然看到很简单,但是测试部分,我是认真私下里测试了2个小时了,所以说为什么看书觉得东西简单,自己做题目做项目觉得都是问题,因为,作者已经把遇到的坑解决过了,然后整理的一个没有问题的东西。

    另外,我感觉要写很多了,因为马上还得去生产库上开发,刚才开发用的localhost,生产上还得写python脚本,所以,用两篇来记录吧。不然没办法了,写不完。

    对哦,再说一个细节,这里我们没有用kettle的时间调度,因为马上我们会用python来写任务调度。






















    展开全文
  • kettle中做查询时,遇到大数据时怎么办? 在kettle常常有处理从一个源数据中做转换.做转换的时候, 需要去查另一个数据库.  这种问题遇到数据小时候还好办. 但是数据魇 时候就麻烦来了. 下面针对三种情况做具体...
    kettle中做查询时,遇到大数据时怎么办?
    在kettle常常有处理从一个源数据中做转换.做转换的时候, 需要去查另一个数据库. 

    这种问题遇到数据小时候还好办. 但是数据魇 时候就麻烦来了.

    下面针对三种情况做具体情况的选择办法

    先上一个图

    [img]

    [/img]

    1. 当需要转换的数据特别大的时候, 例如: 10W条以上.或者100W条以上时.

       上图中,hadoop数据导入,导入的数据如果够多,例如100W条以上,其中一个字段需要查询数据库中查询,而这个字段的类型并不多,例如只有10个类型或者数据库中就只有这10个类型.那么,可以走线路2, 并且线路2中的 "使用缓存" 可以打勾,也可以不打.当然你这个源里的数据太多,打上当然最好了.因为省得再去你的数据库里再查.
        
        但是当源里的数据类型还是只有10个类型,但是你的数据库里面存了有10000条记录时,怎么办?
      有两种解决办法: 
           1).线路2:并且查询节点中的 "使用缓存" 不能打勾.
           2).线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了

    2. 查另一个数据库的数据量大时,而你的源数据不大.

        最好的选择是
         线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了


    3. 当两个数据源都非常大时(最不想遇到的)
       这种情况是最不想遇到的办法
        一种选择:
         1).线路2中的 "使用缓存" 打勾.

    当然还有别的更复杂但是会更快的办法.适用场景比较少,不再详细写了.
    展开全文
  • 写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和...

    写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/
    尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。我希望在最美的年华,做最好的自己

            上一篇博客《还不会使用大数据ETL工具Kettle,你就真的out了!》博主已经为大家介绍了Kettle简单的使用操作,也确实谈到了后面会出较复杂操作的教程,其中当数与大数据组件之前的一些操作。所以本篇博客,博主为大家带来Kettle集成配置大数据的教程,为下一篇Kettle的进阶操作做铺垫!

    在这里插入图片描述


    Kettle集成大数据

    1. 修改配置文件

    我们打开Kettle安装目录下的pentaho-big-data-plugin文件夹
    data-integration\plugins\pentaho-big-data-plugin
    修改plugin.properties文件,把active.hadoop.configuration的值设置成:cdh514
    在这里插入图片描述

    2. 移动jar包路径

    我们进入到cdh15文件夹的lib目下
    data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh514\lib
    可以发现里面有两个文件夹和一堆jar包
    在这里插入图片描述
    我们只需要做的是把clientpmr这两个文件夹里的jar包拿出来放置到它们父目录,也就是图中所示目录下。

    3.上传集群核心配置文件到本地并替换

    因为后续我们需要kettle连接集群的大数据相关组件,所以这一步需要将集群上相关的核心配置文件上传到window本地,在kettle的目录下进行替换操作!

    操作路径为:
    data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh514

    本步骤中,我们需要替换的配置文件有

    在这里插入图片描述
    是不是很眼熟,这不都是hadoop集群上的核心配置文件吗
    在这里插入图片描述
    是的,我们打开集群,进入到Hadoop的etc/hadoop目录下
    cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
    开始往windows端上传文件
    sz yarn-site.xml hdfs-site.xml mapred-site.xml core-site.xml

    进入到hive的目录
    cd /export/servers/hive-1.1.0-cdh5.14.0/conf
    同理
    sz hive-site.xml

    为了后续也能正常使用hbase,这里的操作也与上面一致
    cd /export/servers/hbase-1.2.0-cdh5.14.0/conf
    sz hbase-site.xml

    然后将文件全部复制到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh514下替换即可
    在这里插入图片描述


    执行到这里,我们来测试一下环境是否整合好了

    4.测试

    1. 新建一个集群(new Cluster)

    在这里插入图片描述

    2. 配置集群信息

    在这里插入图片描述
    看到步骤2这样测试显示的结果,说明我们的环境就整合好了~
    在这里插入图片描述


            本篇只是环境整合篇,还未涉及到与Kettle任何实质性的操作,因此就到这就先结束了。下一篇博客博主将为大家详细介绍更多Kettle的转换操作,敬请期待!

            如果对你有所帮助,记得点赞评论关注三连|ू・ω・` )
    在这里插入图片描述

    展开全文
  • 写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和...

    写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/
    尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。我希望在最美的年华,做最好的自己!

            最近在做一个数仓项目,其中就用到了Kettle。对于像我这样的小白来说,自然也是第一次使用。但好在熟能生巧,在快速掌握了如何使用之后,便打算单独拿一期来好好为大家科普一下什么是Kettle,以及如何简单入门~

    在这里插入图片描述


    可视化ETL工具

            ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load) 至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库

    Kettle介绍

            对于企业或行业应用来说,经常会遇到各种数据的处理,转换,迁移,掌握一种etl工具的使用,必不可少,这里要学习的ETL工具是——Kettle,现在已经更名为PDI

            Kettle的主要特点如下:

    • Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装
    • Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出
    • Kettle允许管理来自不同数据库的数据,提供一个图形化的用户环境来描述想做什么,无需关心怎么做

            既然Kettle这么重要,那接下来让我们看看在大数据岗位中对于Kettle的掌握要求。

    大数据岗位需求

    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


    在这里插入图片描述


            通过对上面大数据岗位的职位需求信息可以发现,越来越多的企业要求程序员掌握Kettle这门技术

            那此时看到这里的你若跟博主最初一样,心里想着我不会使用Kettle怎么办啊…别急,停止焦虑,继续认真往下看👇

    在这里插入图片描述

    Kettle安装,配置

    环境要求:

    • 安装、配置好JDK

    1.下载Kettle(体贴的博主已经为大家准备好了)

    链接:https://pan.baidu.com/s/1MxwhWmXWCUthOhhZ53HQ-Q 
    提取码:eupb
    

    2.解压Kettle

    我们打开data-integration目录,双击Spoon.bat即可成功打开Kettle
    在这里插入图片描述
    然后就会看到类似这样的界面
    在这里插入图片描述
    当成功打开之后,就可以看到
    在这里插入图片描述
    既然都打开了,咱不能闲着,赶紧跟着本菌的步伐,上手下面罗列出的入门案例。

    入门案例

    提前声明:以下案例所需要的数据源博主均已备好并与压缩包放置网盘,需要的朋友请自取😎。

    Test1 csv - excel

    需求:

    • 把数据从CSV文件(ketttle测试数据\用户数据源\user.csv)抽取到Excel文件

    具体步骤:

    1.新建一个转换
    在这里插入图片描述
    2.拖拽一个CSV输入组件、一个Excel输出组件、并按住Shift拖动鼠标连接两个组件
    在这里插入图片描述
    在这里插入图片描述
    拖拽完成后,使用Ctrl+Alt 将两个组件连接起来
    在这里插入图片描述
    3.配置CSV输入组件
    在这里插入图片描述
    点击预览数据
    就可以看到数据输入的内容
    在这里插入图片描述

    4.配置Excel输出组件
    在这里插入图片描述
    在这里插入图片描述
    5.配置完毕,点击运行,保存操作记录文件,然后就可以下面的结果
    在这里插入图片描述
    6.观察输出文件
    在这里插入图片描述
    若看到上面的结果,说明大家操作成功了~

    Test2 json-excel

    需求:

    • 将资料\kettle测试数据\用户数据源\user.json数据文件,通过Kettle,抽取到Excel中

    user.json文件中就是类似这样的数据
    在这里插入图片描述
    因为有了第一题的基础,所以下面为了节约大家的阅读时间,所以博主将只讲重点的地方

    1.拖拽出一个Json 输入组件和 Excel输出组件并连接
    在这里插入图片描述
    2.配置Json输入组件
    在这里插入图片描述
    注意:这里只有选择了输入的字段,下面预览数据才能看到数据
    在这里插入图片描述
    在这里插入图片描述
    预览数据
    在这里插入图片描述
    3.配置Excel输出组件
    在这里插入图片描述

    4.运行

    在这里插入图片描述
    看到转换完成的日志结果,我们打开文件查看

    在这里插入图片描述
    很棒,为你们点赞(๑•̀ㅂ•́)و✧

    Test3 mysql -excel

    1.拖拽出一个表输入组件和Excel输出组件并连接

    在这里插入图片描述
    2.配置表输入

    注意:无论连接的是本地还是集群上的Mysql,都需要先开启数据库服务。
    在这里插入图片描述
    在上面一步创建连接时指定的连接名称的数据库中选择需要作为输入的表
    在这里插入图片描述
    在这里插入图片描述
    3.配置Excel输出组件
    在这里插入图片描述
    4.运行
    在这里插入图片描述
    看到转换完成的日志结果后,打开作为输出的Excel文件,nice,又成功了!
    在这里插入图片描述


    总结

            看到这里,相信大家还是意犹未尽(又在想peach…),但苦于篇幅有限,本菌也只能暂且为大家带来这么多。本篇只列出三个案例,简单带着没使用过的朋友入了下门。其实关于Kettle的更多复杂使用还没在这里细讲,至少在我所需要掌握的范围内,就多达几十个

            很佩服能坚持看到这里的各位朋友,为你们点个赞👍

            放心,关于Kettle更多的操作,博主都会补给大家😎

            谁让我有一批这么帅气的粉丝呢٩(๑❛ᴗ❛๑)۶

            如果对你有所帮助,记得点赞评论关注三连|ू・ω・` )

    展开全文
  • 数据量太大,首先想到的办法...如果使用分页循环,设置环境变量,然后在转换中获取环境变量,这种情况下整个流程是在一个job里面,kettle是运行在jvm中的,通过观察jvm的垃圾回收情况,发现,kettle中并未有堆回收(...

    数据量太大,首先想到的办法就是分页执行,这一点oracle跟mysql不一样,mysql有limit语法,而oracle没有这个语法,oracle需要rownum并且需要别名嵌套才能实现limit的功能。

    如果使用分页循环,设置环境变量,然后在转换中获取环境变量,这种情况下整个流程是在一个job里面,kettle是运行在jvm中的,通过观察jvm的垃圾回收情况,发现,kettle中并未有堆回收(但是觉着这是kettle的一个bug呢)。


    因此,我们想到一条思路,如果让kettle能够自动进行垃圾回收,这个问题比较发散,思考过脚本定期干预jvm垃圾回收机制,还有一种也是通过我们大量的尝试工作,比如调整kettle的运行参数(无非就是配置文件的内存,这个有作用,但是还是无法从根本上解决问题,如果数据量无限扩大,内存总有极限值)
    ,调整队列大小,调整批处理个数等多种策略。

    最终确定了将分页处理逻辑封装在一个job中,这样kettle的垃圾回收正好可以在每一个job中实现切换,自然实现了垃圾回收。这是一种思路,这块我总结:kettle的堆回收是在job切换的过程中进行了[非常重要]。


    接下来,我们尝试如何让job内的变量获取到之后改变job外的环境变量,发现没有走通。之后我们进行了在一个job中的环境变量设置,js代码的获取及改变解决了这个问题。


    最后打开jvm监控工具,发现了一条完美的直线,这样做,解决了kettle的垃圾回收,并且性能非常的稳定。

     

    此处网上的答案非常少,分享出来,以后大家遇到这样的问题也好解决。

    展开全文
  • 文章目录可视化ETL工具——KettleKettle介绍Kettle入门案例csv - excelJson - excelMySQL - excel生成数据 - excelMySQL - 文本Json - MySQLJson - MySQLMySQL删除数据集成大数据HDFS - excelJson - HDFS集成...
  • 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5524614.html 需求: 将Oracle数据库中某张表历史数据导入MySQL的一张表里面。 源表(Oracle):table1 目标表(MySQL):table2 ...思...
  • 本场景是为某大数据项目做的一个产品POC,现在分享给大家。此项目主要从几个业务系统中同步数据进行加工处理分析,最后生成API供前端展示。POC分两大场景,一个非实时场景及准实时场景。  非实时场景流程如上图...
  • 今天整点大数据应用的开发。做一个定时校验的Job ​Kettle自行百度,做ETL的。下面就开始吧。 首先kettle,开发系统时间的转换,这步很关键的,兄弟: ​具体代码也贴出来,这个是设置环境变量, ​接下来,看分割...
  • 由于主要是应用kettle与hadoop集群和hive连接进行数据处理。所以这里简单叙述下kettle与hadoop集群连接时的大致步骤: 1.双击kettle(即data-integeration)目录下的spoon.bat,启动kettle 2.kettle启动后
  • 文章大纲python 与hdfs 交互 回写python2 与hdfs在python中直接调用hadoop shell 命令去操作文件python 与 py4j 交互pyspark 直接写文件到磁盘(这个可以搭建一个本地的spark 单机版试试)python docker 搭建spark ...
  • kettle精讲,本节课程主要包括kettle基础的表输入、增量更新、同步更新、定时任务,学完可以基本满足企业的日常开发需要
  • 课程地址 kettle8.2数据仓库零基础快速入门(一):www.boxuegu.com/freecourse/… ...kettle8.2大数据整合构建企业大数据开发环境(三):www.boxuegu.com/freecourse/… 课程简介 ETL工程师,在数据...
  • 大数据Excel通过Kettle 穿插javascript进行数据清洗 在将数据导入Excel里
  • Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行。  说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用。我这里啊,先描述ETL工具的通用功能,...
  • Kettle的集群原理 Kettle集群: 是由一个主carte服务器和多个从carte服务器组成的,类似于master-slave结构,不同的是’master’处理具体任务,只负责任务的分发和收集运行结果。 Master carte结点收到请求后,把...
  • ETL是什么?为什么要使用ETL?KETTLE是什么?为什么要学KETTLE?    ETL是数据的抽取清洗转换加载的过程,是数据进入数据仓库进行大数据...大数据的利器大家可能普遍说是hadoop,但是大家要知道如果我们不做预...
  • kettle性能及效率提升

    2017-04-11 01:20:41
    Kettle数据处理的过程中难免会遇到性能瓶颈,因此性能及效率的提升成为摆在面前的问题,因此笔者罗列一些常用的优化建议。 kettle优化索引的正确使用数据抽取SQL优化 kettle优化 尽量使用数据库连接池;...
  • 现在需要对以往数据进行整合并进行数据迁移 确定目标表 数据源及数据量如下 待迁移数据 目标表与Z0_工单_整理备份 的字段是一致的。为了方便后续操作(增删改查、数据迁移、增量备份)需要新增几个字段 ...
1 2 3 4 5 ... 20
收藏数 1,590
精华内容 636