- 博客(73)
- 资源 (3)
- 收藏
- 关注
原创 kettle之数据库连接-Generic database连接hive(CDH版)
是因为驱动包的版本不对,因为我们连接的是cdh的hive,所以需要导CDH集群目录下拷贝hive的驱动包,一般在CDH/jars/hive-jdbc-1.1.0-cdh5.5.0-standalone.jar。包这个错是因为缺少hadoop-common包,也是到CDH目录下拷贝hadoop-common-2.6.0-cdh5.5.0.jar即可。版本:kettle7.1、hive-common-1.1.0-cdh5.5.0。
2023-06-26 11:06:28
1294
原创 kettle文件资源库之Show hidden folders
这个功能的实际应用场景在于,例如我们的kettle资源库是用git进行版本管理的,那么git就会在根目录下生成一个.git的隐藏文件,如果没有勾选这个选项,那么kettle会把这个文件夹当做资源库目录来扫描,而这个目录文件或文件夹会很多(可能成百上千个),会导致在打开资源库的时候非常缓慢,这时候这个选项就很有用处了。通过repositories.xml文件我们可以看到,其实这个选项在配置文件中对应的标签是:<hides_hidden_files>Y</hides_hidden_files>,默认是N。
2023-06-25 15:16:48
741
原创 waterdrop1.x导入clickhouse分布式表-修改源码
接上一篇,使用fiter+sql方式进行分布式写表,存在效率低的问题,现在尝试从源码入手,制定clickhouse的分布式表本地写入方案1、目标:实现按行hash和按行随机两张写表模式,兼容之前的单机模式和分区随机模式2、思路:新增2个参数write_mode:写表方式 hash_fields:hash字段,支持多个字段,逗号分隔伪码:如果(【cluster】参数有效): 如果(【write_mode】有效): 如果(write_mode=‘rowhash’,且【
2022-02-22 14:05:11
893
原创 waterdrop1.x导入clickhouse分布式表-fitersql
接上一篇,最后留下的两个问题, 针对问题2:在不修改源代码的情况下,如何实现分布式表的本地hash方式写入?现在做一些尝试和验证。思路:waterdrop是可以进行多数据流程处理的,官方说明文档:配置示例3 : 一个灵活的多数据流程处理利用这个特点,可以配置多个output和多个fiter一一对应,在fiter中利用spark sql进行hash分流,注册N个临时表,然后对应N个output输出到N个shard中。下面来实际测试:在测试之前,请确保你的clickhouse分布式...
2022-02-10 16:04:26
1452
原创 waterdrop1.x导入clickhouse分布式表-默认方式
先引用一段官方output clickhouse插件中,对分布式表的说明官方文档地址:https://interestinglab.github.io/seatunnel-docs/#/zh-cn/v1/configuration/output-plugins/Clickhouse分布式表配置ClickHouse { host = "localhost:8123" database = "nginx" table = "access_msg" cluster =
2022-02-08 19:22:35
990
原创 clickhouse集群模式配置
1、分布式集群常见方案方案 特点 方案一:MergeTree + Distributed 1、无副本。2、无需zk。3、只能写本地表 方案二:MergeTree + Distributed+集群复制 1、写集群表。2、利用集群复制机制解决副本问题。3、无需使用zk 方案三:ReplicatedMergeTree + Distributed 1、写本地表,通过zk做副本分发。2、写本地表,读集群表。3、高度依赖zk 我这里因为数据是从hive表导入的,所以无需副本.
2022-02-08 18:55:09
3268
原创 复杂sql-按【地点】变化分组(【地点停留】时长问题)
示例数据如下: 序号 时间 地点 1 9:00 A 2 9:01 A 3 9:03 A 4 9:04 B 5 9:09 A 要
2021-07-12 17:21:34
385
原创 图解kafka消费者两种分区分配策略
c1 c2 c3 range策略 p0、p1 p2、p3 p4 roundrobin策略 p0、p3 p1、p4 p2 可能你会觉得两种策略差不多,两种策略都是:c1两个分区、c2两个分区、c3一个分区下面再来看多个TOPIC的情况: c1 c2 c3 range策略 p1_0、p1_1、p2_0、p2_1 p1_2、p1_3、p2_20、p2_3 p1_4、p2_4 rou......
2021-06-28 11:41:54
295
原创 复杂sql-按【连续时间】分组(连续【登录】天数问题)
本文基于hive1.1.0-cdh5.12.1示例数据如下: userid date a 2021-01-01 a 2021-01-02 a 2021-01-03 a 2021-01-05 a 2021-01-06 b 20
2021-06-28 10:04:12
664
原创 sql技巧-滚动窗口分组
本文基于hive1.1.0-cdh5.12.1将数据按N个一组进行分组示例数据: id 0 1 2 3 4 6 7 要求:将id按一个长度为N的滚动窗口分组(N>1),并求出窗口区间(前闭后开)参考结果:N=3 id 分组 窗口区间 0
2021-06-21 17:13:04
594
原创 Type mismatch, expected: OutputTag[NotInferedX], actual: OutputTag[AnyLog]
今天在用SideOutPut写分流的时候,遇到了一个莫名其妙的错误:Type mismatch, expected: OutputTag[NotInferedX], actual: OutputTag[AnyLog]代码如下:大概的意思就是类型不匹配,经过与官网的例子进行逐行对比修改,在于发现问题,因为是网上找的java例子修改的,拷贝的时候,自动引用了错误的包之前引用的是java类org.apache.flink.util.OutputTag而正确的类应该是scala的类org.apa.
2020-11-27 16:51:41
562
原创 hive几种判断字符串开头的方法对比
select count(*) from tds_sk_his t where dt='2020-10-27' and user_num like '0086%'; --50.508 secondsselect count(*) from tds_sk_his t where dt='2020-10-27' and user_num rlike '^0086'; --46.483 secondsselect count(*) from tds_sk_his t where dt=...
2020-10-28 11:39:30
12175
原创 sparkstreaming reduceByKeyAndWindow 高效的同时带来的问题
reduceByKeyAndWindow 有一个重载reduceByKeyAndWindow(func,invFunc,windowLength,slideInterval,[numTasks]),可以实现高效计算。它的原理是维护一个中间状态(结果),然后对增量(减量)进行计算。但同时也随之带来两个问题1、必须维护中间状态,所以使用这个方法时,必须同时使用checkpiont。2、因为有中间结果的存在,所以当某个key已经完全滑出窗口后,这个key依然还会在中间结果中维护随着时间的推移,如果
2020-08-14 10:18:25
447
原创 kettle导出Excel报错:No such file or directory
明明已经指定文件对了目录和文件名,但是导出时仍然提升文件不存在。而且偶尔也能成功。2020/04/09 19:35:31 - Excel 输出:新疆.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : java.lang.RuntimeException: java.io.IOExce...
2020-04-10 14:51:39
1736
原创 scala可变集合与不可变集合的理解
var mySet=Set("a","b"); //声明一个可变的mySet变量,可以想象mySet只需的内存地址是A0001mySet.add("c"); //报错,因为mySet是一个不可变对象,它没有add方法mySet=Set("a","b","d"); //正常执行,因为用var什么,mySet指针可以改变。这时候mySet只需的内存地址是A0002val mySet=Set("...
2020-04-08 21:16:00
1017
1
原创 HIVE自定义UDAF中将部分结果汇总时需要注意的一个地方
最近有些了一个UDAF,在调试时,遇到了一些奇怪的现象,明明逻辑正确,却总是得不到预期的结果。而且测试环境正确,但是放到生产环境的不正确。通过对应中间变量日志,看到以下数据:以上是map的日志输出,可以看到,两次输入的value数组,在第四行的oprations(中间缓存变量)时,变成了两个一模一样的数组。这是一个典型的引用变量问题。观察代码如下:private ArrayList&...
2020-04-01 14:37:29
330
原创 hive查询元数据得到表及字段结构注释
--hive查询元数据得到表及字段结构注释SELECT DBS.DB_ID,DBS.NAME,TBL_ID,TBL_NAME,COLUMNS_V2.CD_ID,COLUMNS_V2.COMMENT,INTEGER_IDXfrom TBLSLEFT join DBSon TBLS.DB_ID=DBS.DB_IDleft join SDSon TBLS.SD_ID=SDS.SD_ID...
2020-03-24 11:57:04
8724
原创 HIVE在UDAF中使用TreeMap的问题
由于业务需要,编写了一个自定义的聚合函数,实现一个自定义的累加器。因为其中vlues需要排序,所以就使用了一个TreeMap,根据模板及《hadoop权威指南》中的说明,merge()方法,接受一个对象作为输入。这个对象的类型必须和terminatePartial()方法的返回类型一致。我的代码片段如下:private TreeMap<Long,ArrayList<Lon...
2019-11-22 18:16:09
358
原创 grafana连接mysql时区问题
在用grafana连接mysql的一个视图展示数据时,出现grafana中的时间比数据库中的时候多8小时的问题,表现如下:视图结构:数据:grafana展示:从上两张图可以看到,数据库中1点钟的值是8,但是在grafana中展示的缺失9点钟的值是8,这是很典型的时区问题。尝试设置grafana中的时区。将时区从defualt改成第三个UTC后,展示结果如下...
2019-08-06 10:54:30
11804
2
原创 hive on spark 内存溢出
前端时间用hive改写了一个java mapreduce查询,由于用到了grouping sets,组合比较多,同时数据也比较大(每天1700万左右),需要对当月进行统计。每到下半月时,reduce阶段就经常报内存溢出错误。错误信息如下Reducer preempted to make room for pending map attempts Container killed by the...
2019-07-31 19:01:06
1752
原创 关于hive中的with as 语法
网络上搜索到的结果,都是说with as可以有缓存数据,减少表扫描,优化速度的作业,其实并不是这样,以下通过实验分析和证明写一个很简单的语句:with t as(select regexp_replace(reflect("java.util.UUID", "randomUUID"), "-", "") AS id --生成一个随机id,'andy' as name) selec...
2019-06-20 15:42:20
7706
4
原创 hive on spark 修改application name
基于spark引擎的hive,在hive客户端中提交查询sql后,在yarn管理界面,或者8088界面,看到的作业名称都是"hive on spark",如下图所示,如果有多个脚本同时在运行时,就不好分辨。如果是基于mapreduce引擎的,可以通过设置mapred.job.name参数来实现(笔者未验证)。而基于spark引擎的,需要设置spark.app.name。hive...
2019-04-08 12:56:31
2831
原创 使用欧元符号€作为hive表的分割符
现有一份数据,是使用欧元符€作为分隔符,现在想要将数据加载到hive中。普通的 row format delimited FIELDS TERMINATED BY '€' 并不行,百度找到一篇博客,说使用 -128作为分隔符,也不行。解决这个问题,需要使用到org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe这个类。这个类常用于...
2019-04-03 20:12:16
2728
2
原创 kettle之param选项使用
通过命令行调用kettle的转换或者作业时,有时候需要传递一个变量参数,例如:(以下命令是在资源库环境下运行)kitchen.sh -rep:BAS2.0_TRANSFE -user:admin -pass:admin -dir / -job:test1 -param:day=20181201 这样的参数,在kettle成为命名参数,-param:day=20181201就是传递的命名...
2018-12-25 12:04:58
2321
原创 JAVA类与接口的关系
类与接口,继承、实现关系总结如下:接口 继承 接口 (可以继承多个接口)接口 不能继承、实现 类类 实现 接口 (可以实现多的接口)类 继承 类 (不可以继承多个类)因为接口中不能定义方法体,所以接口不能继承(更不能实现)类。虽然jdk1.8可以在接口中有方法实体,但接口依然不能继承类。...
2018-04-17 19:20:35
969
原创 使用jaydebeapi同时连接两个不同数据库(oracle+mysql)的问题
在使用jaydebeapi只连接一种数据库时,是没问题的,但是如果需要同时连接两种数据库,不然同时连接oracle和mysql例如以下测试代码:import jaydebeapi ##使用jdbc驱动连接数据库import pandas as pddirver='oracle.jdbc.driver.OracleDriver'jarFile='D:\\WORK\\PYScript\\Bi...
2018-04-02 11:24:35
7342
3
原创 java知识备忘
最近重新看了一遍java基础,记录了一些之前没太注意的细节,以备之后参考复习:&&和&都可以表示逻辑与,&&为短路逻辑与,如果全面的表达式为false,则不再执行后面的表达式。&为非短路逻辑与,判断两个表达式的真假。同理||和|类似&&和&都可以表示逻辑与,&&为短路逻辑与,如果全面的表达式为false,则不再...
2018-03-30 19:53:59
229
原创 java api调用Kettle作业需要引用jar包最小集
在使用java 调用Kettle作业是,需要调用一些第三方包,理论上,把Kettle_Home下的lib和libswt全都引用进去就可以了,但是作业引用的话,打包后jar巨大,100多M,所以最好是引用最小集即可。经过反复测试得到,java调用Kettle时引用第三方jar包的最小集为:kettle-engine-7.0.0.0-25.jarkettle-core-7.0.0.0-25.jarme...
2018-02-08 17:07:11
5167
4
原创 equals及hashCode的一点理解
最近在学习mapreduce时,自定义了一个AppUidKey类作为自定义key。AppUidKey类需要重写equals方法,重写equals方法就必须重写hashCode方法,所以找了些资料学习,对hashcode有了一点点理解,也不一定全都准确,权当学习笔记 我们知道,两个String对象比较是否相等时,是判断其内容是否相等,而String的父类Object中的equals只有在两个引用
2018-02-02 09:47:12
282
原创 Hadoop HDSF并行复制数据
在HDFS中复制数据,最普通的命令是Hadoop fs -cp,但是这是一个单线程的复制方式,如果需要复制一个很大的目录和文件,需要时间将比较长。其实Hadoop还提供了一个更加高效的复制数据命令 Hadoop distcp 源目录 目标目录测试在10个节点的集群上复制一个24G的目录,使用Hadoop fs -cp用了7分钟,而用Hadoop distcp只用了不到1分钟,速度快了将近1
2018-01-22 19:50:46
1125
原创 python DataFrame转换成柱状图html代码
之前写了个服务器磁盘监控的脚本,每天将磁盘的使用情况通过电子邮件发送出来,通过paramiko.SSHClient()将磁盘使用情况报错到一个DataFrame对象中,然后通过DataFrame的实例方法to_html直接转换成html,最后通过MIMEText发送html到邮箱中。 通过以上方法,在邮件正文中看到的是表格,在服务器较多时,不够直观。所以想改造成直接显示柱状图。但是邮
2018-01-20 15:57:00
2467
原创 python使用jdbc连接oracle数据库
想将一个python项目部署到生产服务器上运行,但是服务器上没有装oracle客户端,无法使用cx_Oracle包,所以想要使用jdbc来连接数据库,遂有了一下测试。python版本: C:\Users\Administrator>pythonPython 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41...
2018-01-16 13:45:48
21952
6
原创 networkx 画图中文方块
今天在使用networkx画网络社交图时,画出来的节点名称中文显示全是方块,经过多次百度和尝试,最终解决版本:Python 3.5 (Anaconda3)操作系统:win71、下载一个中文字体,比如微软雅黑msyh.ttf2、找到python安装目录下的字体文件目录,比如我的是:F:\Program Files\Anaconda3\Lib\site-pack
2017-12-26 19:53:26
2933
2
原创 使用sqoop2实现hdfs与Oracle数据相互导入
上一篇已经完成了sqoop2的安装,本篇文章介绍sqoop2将数据从Oracle导入hdfs已经从hdfs导入Oracle1、连接sqoop2服务sqoop2是c/s模式,之前安装并启动的是sqoop的服务端,如果想要使用和操作sqoop2,需要通过客户端连接到服务端,然后使用。只要保证服务端正常处于运行状态,客户端可以从任意终端发起。也就是说,客户端可以是一台只解压了sqoop2安装包的
2017-10-14 10:31:43
8412
原创 zookeeper管理数据库连接信息
zookeeper管理数据库连接信息本文将讲解如何利用zookeeper来管理项目中的数据库连接信息,即将数据库的IP、账号密码等信息存储在zookeeper中,这样的好处是可以将多个工程的数据库连接集中管理,而zookeeper本事又是分布式的,所以可靠性又有保障。一、安装zookeeper1、下载zookeeper可以通过官方网站或者国内镜像下载:官方网站:ht...
2017-10-06 16:08:26
3203
原创 Kettle之【执行SQL脚本】控件用法
版本:kettle6.1控件:执行SQL脚本该控件可以执行一个update语句,用来更新某个表中的数据,如果不带条件,就很简单,把SQL语句粘贴到控件中,设置好数据库连接即可如果需要带条件执行,则需要进行一些设置。入下图,是一种常用的设置方法需要设置的地方有:1、勾选“变量替换”2、勾选“执行每一行?”3、勾选“Bind parmaters?”4、在wh
2017-07-20 11:44:40
18916
5
原创 KETTLE大批量提交数据时出现丢失问题
之前在做ETL是,表输入控件中,设置批量提交,并且将【提交记录数】设置为10万,脚本正常执行完,没有报然后错误,但是目标表的数据行数只有源表的三分之一左右,出现了数据莫名丢失的情况,在交流群中求助,也没有谁能解答,百思不得其解。一次偶然的机会,在网上看到关于oracle的jdbc驱动,比较ojdbc6.jar与ojdbc14.jar的区别。提到ojdbc14.jar存在的一些bug,批量插入1
2017-07-18 15:45:45
7231
1
原创 sql查询进阶
准备数据 insert into t_income values('201701',1,1000);insert into t_income values('201701',2,2000);insert into t_income values('201701',3,3000);insert into t_income values('201701',4,4000);insert into
2017-03-29 20:51:56
932
waterdrop1.x output clickhouse classes
2022-02-22
py4j源码安装包源码
2018-08-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人