自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (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 1097

原创 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 639

原创 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 849

原创 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 1425

原创 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 950

原创 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 3206

原创 复杂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 349

原创 图解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 270

原创 复杂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 607

原创 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 556

原创 sql技巧-产生连续日期(时间)序列

要求:通过sql生成一段连续的日期,入2021-01-01至2021-01-31参考实现:d

2021-06-10 09:45:31 5255 1

原创 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 524

原创 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 11758

原创 sparkstreaming reduceByKeyAndWindow 高效的同时带来的问题

reduceByKeyAndWindow 有一个重载reduceByKeyAndWindow(func,invFunc,windowLength,slideInterval,[numTasks]),可以实现高效计算。它的原理是维护一个中间状态(结果),然后对增量(减量)进行计算。但同时也随之带来两个问题1、必须维护中间状态,所以使用这个方法时,必须同时使用checkpiont。2、因为有中间结果的存在,所以当某个key已经完全滑出窗口后,这个key依然还会在中间结果中维护随着时间的推移,如果

2020-08-14 10:18:25 418

原创 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 1648

原创 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 960 1

原创 HIVE自定义UDAF中将部分结果汇总时需要注意的一个地方

最近有些了一个UDAF,在调试时,遇到了一些奇怪的现象,明明逻辑正确,却总是得不到预期的结果。而且测试环境正确,但是放到生产环境的不正确。通过对应中间变量日志,看到以下数据:以上是map的日志输出,可以看到,两次输入的value数组,在第四行的oprations(中间缓存变量)时,变成了两个一模一样的数组。这是一个典型的引用变量问题。观察代码如下:private ArrayList&...

2020-04-01 14:37:29 311

原创 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 8464

原创 HIVE在UDAF中使用TreeMap的问题

由于业务需要,编写了一个自定义的聚合函数,实现一个自定义的累加器。因为其中vlues需要排序,所以就使用了一个TreeMap,根据模板及《hadoop权威指南》中的说明,merge()方法,接受一个对象作为输入。这个对象的类型必须和terminatePartial()方法的返回类型一致。我的代码片段如下:private TreeMap<Long,ArrayList<Lon...

2019-11-22 18:16:09 339

原创 grafana连接mysql时区问题

在用grafana连接mysql的一个视图展示数据时,出现grafana中的时间比数据库中的时候多8小时的问题,表现如下:视图结构:数据:grafana展示:从上两张图可以看到,数据库中1点钟的值是8,但是在grafana中展示的缺失9点钟的值是8,这是很典型的时区问题。尝试设置grafana中的时区。将时区从defualt改成第三个UTC后,展示结果如下...

2019-08-06 10:54:30 11502 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 1715

原创 关于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 7647 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 2711

原创 使用欧元符号€作为hive表的分割符

现有一份数据,是使用欧元符€作为分隔符,现在想要将数据加载到hive中。普通的 row format delimited FIELDS TERMINATED BY '€' 并不行,百度找到一篇博客,说使用 -128作为分隔符,也不行。解决这个问题,需要使用到org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe这个类。这个类常用于...

2019-04-03 20:12:16 2617 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 2258

原创 华为:无法连接远程服务器:未知插件kcptun

是需要设置关联启动因为shadowsocks需要启动kcptun开启方法:手机管家-自启管理-应用关联启动管理找到kcptun,开启可被其他应用启动 即可 

2018-05-08 12:46:40 9611 5

原创 JAVA类与接口的关系

类与接口,继承、实现关系总结如下:接口  继承  接口   (可以继承多个接口)接口  不能继承、实现 类类     实现  接口    (可以实现多的接口)类     继承  类        (不可以继承多个类)因为接口中不能定义方法体,所以接口不能继承(更不能实现)类。虽然jdk1.8可以在接口中有方法实体,但接口依然不能继承类。...

2018-04-17 19:20:35 945

原创 使用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 7227 3

原创 java知识备忘

最近重新看了一遍java基础,记录了一些之前没太注意的细节,以备之后参考复习:&amp;&amp;和&amp;都可以表示逻辑与,&amp;&amp;为短路逻辑与,如果全面的表达式为false,则不再执行后面的表达式。&amp;为非短路逻辑与,判断两个表达式的真假。同理||和|类似&amp;&amp;和&amp;都可以表示逻辑与,&amp;&amp;为短路逻辑与,如果全面的表达式为false,则不再...

2018-03-30 19:53:59 212

原创 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 5133 4

原创 equals及hashCode的一点理解

最近在学习mapreduce时,自定义了一个AppUidKey类作为自定义key。AppUidKey类需要重写equals方法,重写equals方法就必须重写hashCode方法,所以找了些资料学习,对hashcode有了一点点理解,也不一定全都准确,权当学习笔记 我们知道,两个String对象比较是否相等时,是判断其内容是否相等,而String的父类Object中的equals只有在两个引用

2018-02-02 09:47:12 257

原创 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 1034

原创 python DataFrame转换成柱状图html代码

之前写了个服务器磁盘监控的脚本,每天将磁盘的使用情况通过电子邮件发送出来,通过paramiko.SSHClient()将磁盘使用情况报错到一个DataFrame对象中,然后通过DataFrame的实例方法to_html直接转换成html,最后通过MIMEText发送html到邮箱中。      通过以上方法,在邮件正文中看到的是表格,在服务器较多时,不够直观。所以想改造成直接显示柱状图。但是邮

2018-01-20 15:57:00 2426

原创 python使用jdbc连接oracle数据库

想将一个python项目部署到生产服务器上运行,但是服务器上没有装oracle客户端,无法使用cx_Oracle包,所以想要使用jdbc来连接数据库,遂有了一下测试。python版本: C:\Users\Administrator&gt;pythonPython 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41...

2018-01-16 13:45:48 21744 8

原创 networkx 画图中文方块

今天在使用networkx画网络社交图时,画出来的节点名称中文显示全是方块,经过多次百度和尝试,最终解决版本:Python 3.5 (Anaconda3)操作系统:win71、下载一个中文字体,比如微软雅黑msyh.ttf2、找到python安装目录下的字体文件目录,比如我的是:F:\Program Files\Anaconda3\Lib\site-pack

2017-12-26 19:53:26 2875 2

原创 使用sqoop2实现hdfs与Oracle数据相互导入

上一篇已经完成了sqoop2的安装,本篇文章介绍sqoop2将数据从Oracle导入hdfs已经从hdfs导入Oracle1、连接sqoop2服务sqoop2是c/s模式,之前安装并启动的是sqoop的服务端,如果想要使用和操作sqoop2,需要通过客户端连接到服务端,然后使用。只要保证服务端正常处于运行状态,客户端可以从任意终端发起。也就是说,客户端可以是一台只解压了sqoop2安装包的

2017-10-14 10:31:43 8375

原创 sqoop2安装

sqoop有两个版本两代之间是两个完全不同的版本,不兼容 sqoop1:1.4.x sqoop2:1.99.

2017-10-11 19:48:26 789

原创 zookeeper管理数据库连接信息

zookeeper管理数据库连接信息本文将讲解如何利用zookeeper来管理项目中的数据库连接信息,即将数据库的IP、账号密码等信息存储在zookeeper中,这样的好处是可以将多个工程的数据库连接集中管理,而zookeeper本事又是分布式的,所以可靠性又有保障。一、安装zookeeper1、下载zookeeper可以通过官方网站或者国内镜像下载:官方网站:ht...

2017-10-06 16:08:26 3080

原创 Kettle之【执行SQL脚本】控件用法

版本:kettle6.1控件:执行SQL脚本该控件可以执行一个update语句,用来更新某个表中的数据,如果不带条件,就很简单,把SQL语句粘贴到控件中,设置好数据库连接即可如果需要带条件执行,则需要进行一些设置。入下图,是一种常用的设置方法需要设置的地方有:1、勾选“变量替换”2、勾选“执行每一行?”3、勾选“Bind parmaters?”4、在wh

2017-07-20 11:44:40 18726 4

原创 KETTLE大批量提交数据时出现丢失问题

之前在做ETL是,表输入控件中,设置批量提交,并且将【提交记录数】设置为10万,脚本正常执行完,没有报然后错误,但是目标表的数据行数只有源表的三分之一左右,出现了数据莫名丢失的情况,在交流群中求助,也没有谁能解答,百思不得其解。一次偶然的机会,在网上看到关于oracle的jdbc驱动,比较ojdbc6.jar与ojdbc14.jar的区别。提到ojdbc14.jar存在的一些bug,批量插入1

2017-07-18 15:45:45 7173 1

waterdrop1.x output clickhouse classes

基于waterdrop1.51(seatunnel1.x),output clickhouse插件,新增分布式写表 rowhash和rowrandom模式

2022-02-22

py4j源码安装包源码

安装JayDeBeApi时,如果报错,提示:error: Could not find suitable distribution for Requirement.parse('py4j') 需要先安装这个py4j

2018-08-18

hadoop2.6 hadoop.dll+winutils.exe

hadoop2.6 hadoop.dll winutils.exe d

2017-12-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除