最近由于工作需要,需要用到kettle工具进行数据迁移转换。特意找资料学习了一下,kettle基本操作算是学会了。
所学的也结合实际工作进行了验证。为了防止以后用到忘记了,便写了几篇文章记录一下。
ETL ( Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程) 。在企业种我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,对开发人员来说必不可少,这里我要学习的ETL工具是Kettle ! 。
Kettle 是一款国外的开源ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
顾名思义,Kettle 翻译为中文是水壶,寓意着把所有乱七八糟的数据放到一个壶里,最终以一种指定格式流出
transformation
和job
,transformation
完成数据基本转换,job
完成整个工作流程的控制外国人起名字挺有意思的,kettle的核心组件就是一套烹饪厨具。kettle的作者应该是一位吃货 (●'◡'●)
① 官网地址
http://community.hitachivantara.com/docs/DOC-1009855
官网地址国内下载可能很慢很慢,小伙伴们可以通过以下国内镜像地址下载
②国内镜像地址
http://mirror.bit.edu.cn/pentaho/Pentaho 8.2/client-tools/
![]() |
---|
![]() |
Kettle是java开发的,所以需要安装jdk,我们这里安装经典的jdk8
至于jdk怎么安装,这里就不细说了,如果不知道的小伙伴百度即可
jdk安装完成后,我们将4.1 下载的安装包解压到自己想放置的路径即可
双击Spoon.bat 即可打开如下界面
本期内容到此就结束了 (●'◡'●)
下一篇:快速上手kettle(二):kettle初体验(小编正在玩命更新中)
作为全球知名的“全能型制造商”,okuma(大隈株式会社)有两座无人工厂,从投料到加工完成都无需人工操作,实现了24小时每周7天不间断运转。双主轴双刀塔车床的代表者——okuma(大隈株式会社),几十年来一直坚持从核心部件(驱动器、编码器、马达、主轴等)到数控操作系统到终端,全部由自社设计开发完成,真正实现了软硬兼备。今天咱们看看大隈okuma机床智能无人工厂,大隈有两座无人工厂,DreamSite1在2013建成,负责生产复合加工机、中大型车床和立式车床。由零件加工区域和装配区域两部分构成,从投料到发货,贯穿所有环节,是一个自主体系的综合型生产工厂。DreamSite2在2017年建成,作为从小型、中型车床和磨床的生产工厂:http://mpvideo.qpic.cn/0bc3q4abiaaamman3lduovrfbb6dcsdqafaa.f10002.mp4?dis_k=4a85ca7deb45df530d584a3f5dfd65d3&dis_t=1652690207&vid=wxv_2386202579631783937&format_id=10002&
ustinJames曾发表过一篇博文《10tipsforadvancingfromabeginnertoanintermediatedeveloper》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将中文译文转载于此,供大家借鉴。在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“helloworld”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验的程序员,根据语言的不同,能在半小时到几小时内掌握足以
认识Python人生苦短,我用Python——Lifeisshort,youneedPython 目标Python的起源为什么要用Python?Python的特点Python的优缺点01.Python的起源Python的创始人为吉多·范罗苏姆(GuidovanRossum) 1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的解释程序,作为ABC语言的一种继承(感觉下什么叫牛人)ABC是由吉多参加设计的一种教学语言,就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果之所以选中Python(蟒蛇)作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(MontyPython'sFlyingCircus)的爱好者1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件1.1解释器(科普)计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语
kgtemp文件是酷我音乐软件的缓存文件,本文从技术层面探讨如何解密该文件为mp3文件,并通过读取ID3信息来重命名。kgtemp解密kgtemp文件前1024个字节是固定的包头信息,解密方案详细可以参见(http://www.cnblogs.com/KMBlog/p/6877752.html):classProgram { staticvoidMain(string[]args) { byte[]key={0xAC,0xEC,0xDF,0x57}; using(varinput=newFileStream(@"E:\KuGou\Temp\236909b6016c6e98365e5225f488dd7a.kgtemp",FileMode.Open,FileAccess.Read)) { varoutput=File.OpenWrite(@"d:\test.mp3");//输出文件 input.Seek(1024,SeekOrigin.Begin);//跳过1024字节的包头 byte[]buffer=newbyte[key.Length]; i
公共参数是用于标识用户和接口签名的参数,如非必要,在每个接口单独的接口文档中不再对这些参数进行说明,但每次请求均需要携带这些参数,才能正常发起请求。 公共参数的具体内容会因您使用的签名方法版本不同而有所差异。 使用签名方法v3的公共参数签名方法v3(有时也称作TC3-HMAC-SHA256)相比签名方法v1(有些文档可能会简称签名方法),更安全,支持更大的请求包,支持POSTJSON格式,性能有一定提升,推荐使用该签名方法计算签名。完整介绍详见签名方法v3。 注意:接口文档中的示例由于目的是展示接口参数用法,简化起见,使用的是签名方法v1GET请求,如果依旧想使用签名方法v1请参考下文章节。 使用签名方法v3时,公共参数需要统一放到HTTPHeader请求头部中,如下表所示: 参数名称 类型 必选 描述 Action String 是 HTTP请求头:X-TC-Action。操作的接口名称。取值参考接口文档中输入参数公共参数Action的说明。例如云服务器的查询实例列表接口,取值为DescribeInstances。 Region String - HTTP请求头:X-
第一节 EasyUI的介绍和常用组件[1]EasyUI的介绍介绍:EasyUI是一个前端开发的框架,其将常用的页面开发使用的组件进行了 封装,前端开发人员只需将EasyUI的资源导入项目后使用即可,快速 提升开发效率。 使用: ①导入EasyUI的资源 ②查阅API文档使用EasyUI的组件完成页面开发 注意:使用EasyUI,其实就是在使用别人已经封装好的代码来完成自己的页面开发。 所以必须按照EasyUI的文档说明来使用。所以我们学习EasyUI,其实就是在 学习如何按照EasyUI的文档来使用其组件并且其常用组件有哪些。 [2]EasyUI的常用组件EasyUI的资源介绍 ①将从官网上下载的EasyUI的资源压缩包解压 ②demo文件夹 EasyUI官方提供的每个组件的使用示例效果代码。 ③locale文件夹:组件中显示的数据语言的js文件 ④plugins文件夹:是EasyUI提供的组件对应的js文件 ⑤src文件夹:源码文件夹 ⑥themes文件夹:EasyUI官方提供的整套的样式 ⑦jquery.min.js文件:依赖的jquery文件,建议使用官方提供的jquery文
更新: 2022/04/07:新增一些比较有用的github在usefullink2022/03/14: 新增统计异常检测方法Grubbs'Test和ESD算法2022/01/07: 新增振幅检测:异常检测_LaoChen_ZeroonE-CSDN博客_异常检测2021/12/23: 新增孤立森林介绍iForest(IsolationForest)孤立森林异常检测入门篇2021/05/29:于4.2新增华为2020KPI异常检测算法大赛亚军解题思路2021/05/24: Linkdin开源Greykite时间序列预测库2021/03/18:推荐几本异常检测相关书籍,感觉作为入门书比较全面《OutlierAnalysis》——CharuC.Agg《Python深度学习异常检测》——清华大学出版社2020/09/02:推荐一篇写的很好的关于视频监控异常检测的学报监控视频异常检测:综述 一.介绍 异常检测(Anomalydetection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于
Nginx配置详解 序言 Nginx是lgorSysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、VirtualHost、URLRewrite、Gzip等功能。并且支持很多第三方的模块扩展。 Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。 牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀,比比皆是。 Nginx常用功能 1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。 这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。 Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器
umi-request umi-request是基于fetch的封装,兼具fetch和axios的特点。旨在为开发者提供便捷统一的请求方式。AntPro中对其进行了初步的封装。比如:统一的错误处理方式。 但是,在实际中我们可能会遇见各种各样的情况,需要按照自己的需求对其进行封装。那就首先从AntPro的统一的异常处理程序开始吧。 首先,引入umi-request的扩展到项目中。 import{extend}from'umi-request'; 复制 其次,根据自己的项目实际情况定义错误码和其对应的提示语。 constcodeMessage={ 200:'服务器成功返回请求的数据。', 201:'新建或修改数据成功。', 202:'一个请求已经进入后台排队(异步任务)。', 204:'删除数据成功。', 400:'发出的请求有错误,服务器没有进行新建或修改数据的操作。', 401:'用户没有权限(令牌、用户名、密码错误)。', 403:'用户得到授权,但是访问是被禁止的。', 404:'发出的请求针对的是不存在的记录,服务器没有进行操作。', 406:'请求的格式不可得。', 410:'
Android逆向分析HelloWorld,使用改之理,通过简单学习smail和改之理的基本使用,可以完成逆向实战的HelloWorld。本次逆向的项目无壳无.SO,分析起来较为容易,适合入门。下面我们来讲述如何实现。 首先我们需要准备一个Apk文件,此Apk需要是未加壳的。 此Apk的源码目录为:DemoCode/Crackme0201 通过测试可以看到,当我们随便输入内容的时候,会发现提示“无效的用户名或注册码”。 然后我们可以通过Android改之理打开这个Apk: 找到提示成功的关键字符串: 并找出对应的id的值, 然后我们在MainActivity的smail文件中搜索词id值: 经过简单的学习smail的基础语法后,经过分析可以发现发现,此处逻辑调用的地方在: 这时,我们想要实现输入任意内容注册成功,只需要将if-nez改成if-eqz就行啦。 然后使用改之理编译成新的APK,安装运行后,就能看到程序按照我们修改后的逻辑执行了。 至此我们的逆向之旅的第一步成功了。
Acer笔记本有一个坑爹的功能,就是默认将功能键F1-F12设置为特殊功能,如每次F2准备进行文件重命名,都会误把电脑设成飞行模式。不知道当时的设计师是怎么想的?这种约定俗成的东西竟然随便改动,坑啊!改回地球人操作习惯的方法: 第一步,重启电脑,按F2进BIOS,第二步,进Main菜单,第三步,找到FunctionkeyBehavior[Specialkeys]选项,把括号里的选项改成[Functionkeys]第四步,按F10保存,然后退出重启 注意:每次系统更新都要重新改一次!再一次坑爹! 我真想问:设计师,你是哪个星球来的?赶紧回去吧! (还有一个极其坑爹的设计,就是把开机键设置在键盘的右上角,与delete和backspace离得极其近。大哥,这两个按键使用频率多高啊?搞得我每次按时,都要小心翼翼,生怕电脑突然就关机了!外星人设计师,赶紧回去吧!太坑了!)
在NetApp发布cDOT8.3以前,很多7的老用户不愿意升级,除了cDOT的概念相对复杂,命令行需要重新学习之外,主要有两个原因。 磁盘使用率低 读性能不高 对于低端的设备,特别是盘很少的情况下,cDOT中的磁盘使用率相比7-Mode低。这主要是cDOT中,根聚合不允许存放用户数据,这就需要每个机头除了根聚合之外,a要额外创建至少一个数据聚合。这样校验盘,每个聚合的热备盘都计算在内的话,实际可用的空间就很小了。 为此,cDOT8.3当中推出了ADP(AdvancedDiskPartition)功能,通过对内置盘的分成根分区和数据分区,并支持将数据分区分配给单个机头(A-P)和分配给两个机头(A-A)的方式,大大提高了磁盘的使用率。 ADP分区方式 下图是针对FAS2500系列标准的内置12块和24块盘的配置中,和7-Mode相比可用容量的变化。除了FAS2554的AA模式,其他的模式都大大提高了可用空间。
#include<iostream>#include<stdio.h>#include<vector>usingnamespacestd;constintmaxn=10005;vector<int>reverse_post;vector<int>node[maxn];vector<int>reverse_node[maxn];intn,m,count;intmarked[maxn];voidreverse_dfs(intv){ marked[v]=1; for(intw=0;w<reverse_node[v].size();w++){/*dfs中不要用别的函数用过的变量名*/ intto=reverse_node[v][w]; if(!marked[to])/*搜索和这个点可以到达的其他点,一直走到底或者回到原点*/ reverse_dfs(to); } reverse_post.push_back(v);/*反着存数据,就可以按照题目的意思正着走了,符合题目a房间到b房间而不是b房间到a房间*/}vo
MSTE:基于多向语义关系的有效KGE用于多药副作用预测 论文标题:Effectiveknowledgegraphembeddingsbasedonmultidirectionalsemanticsrelationsforpolypharmacysideeffectsprediction 论文期刊:Bioinformatics2021 MSTE:基于多向语义关系的有效KGE用于多药副作用预测 摘要 1.引言 2.相关工作 2.1KGE 2.2.1基于平移的模型 2.2.2双线性模型 2.2.3神经网络 2.2现有DDI预测方法 2.2.1基于相似度的方法 2.2.2机器学习方法 2.2.3基于神经网络或KGE的方法 3.材料与方法 3.1预备知识 3.2需要解决的问题 3.3MSTE模型 3.4模型训练 结论 摘要 动机:多药联用是指多种药物联合使用治疗疾病。然而,它经常显示出很高的副作用风险。由于联合用药之间存在不必要的相互作用,多药联用的副作用会增加患病风险,甚至导致死亡。因此,获取丰富而全面的多药副作用信息是医疗保健行业的一项重要任务。 早期的传
目录ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,djangoorm中的事务操作。聚合查询分组查询F与Q查询F查询Q查询Q查询进阶ORM中常见字段及参数常用字段ORM字段与MySQL字段对应关系:常用参数关系字段(1)ForeignKey(1)字段参数(2)OneToOneField(2)字段参数自定义char字段查询优化(面试比较喜欢问)only与deferselect_related与prefetch_relateddjangoorm中的事务操作补充知识: ORM之聚合、分组、F与Q查询,orm中常见字段,自定义char字段,查询优化,djangoorm中的事务操作。 聚合查询 聚合(利用聚合函数) 关键字:aggregate()是QuerySet的一个终止子句,意思是说,它返回一个包含一些键值对的字典。 fromdjango.db.modelsimportMax,Min,Count,Sum,Avg #统计所有书平均价格 res=models.Book.objects.all().aggregate(Avg('ptice')) res1=model
今天很慵懒啊,啥事也没做,把高精度复习了一遍(hdu1002)。 首先俩字符串数组输入,然后按字符串的长度逆序转到整形数组里 (主要是为了把数值的最低位移动到数组的最低位,方便进位); 然后对应的位相加存储到一个新的整形数组里,这时不考虑进位; 最后遍历数组,处理进位问题,再倒序输出,即是答案。 还有一个题hdu1003,是说求一个数列里的子序列中的最大和,这个还是没有想清楚啊。 现在想的大概的思路是,找到负值最大的数的位置,然后就能把数列划分为两个小数列, (如果在数列的一头或一尾那么就还是一个数列)求其和。但是后续可能会有新的问题, 比如可能要再划分一次,才能找到最大的子序列和。(突然想起这有点像快排的思路额,明天再处理吧。) 1#include<stdio.h> 2#include<string.h> 3#include<stdlib.h> 4#include<math.h> 5#include<iostream> 6#
publicclasstest10{ /** *@paramargs */ publicstaticvoidmain(String[]args)throwsException{ //TODOAuto-generatedmethodstub Processp=Runtime.getRuntime().exec("ping127.0.0.1/t"); InputStreamis=p.getInputStream(); BufferedReaderreader=newBufferedReader(newInputStreamReader(is)); Stringline; while((line=reader.readLine())!=null){ System.out.println(line); } p.waitFor(); is.close(); reader.close(); p.destroy(); System.out.println("end"); } } packagecom.why.RunTime;
publicinterfacePrinter{ voidprint(); } /***********************************/ publicclassColorfulPrinterimplementsPrinter{ @Override publicvoidprint(){ System.out.println("thisiscolorfulprinter!!!"); } } /***********************************/ publicclassBlackWhitePrinterimplementsPrinter{ @Override publicvoidprint(){ System.out.println("thisisblackwhiteprinter!!!"); } } /***********************************/ publicclassT{ publicstaticvoidmain(String[]args){ Printercp=newColorfulPrinter(
最近在做一个后台接口, 顺便用ionic4写了个简单的管理后台, 本来skynet管理后台监听的端口是6666, 但是发现chrome默认对一些接口不友善, 虽然可以通过设置启动参数来解决, 但是还是把端口改掉了。 嗯,这个不是今天要记录的内容。 需要记录的内容是:改了监听端口之后,skynet明明可以响应成功,但是却在前端显示CORS错误。 之前用nodejs+express的话,很简单的就能解决,利用express的中间件,在响应头里面写入跨域相关的头信息。 但是skynet的http接口比较晦涩,找起来比较麻烦,skynet的httpd的响应请求部分代码如下: localfunctionwriteall(writefunc,statuscode,bodyfunc,header) localstatusline=string.format("HTTP/1.1%03d%s\r\n",statuscode,http_status_msg[statuscode]or"") writefunc(statusline) ifheaderthen fork,vinpairs(head