- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 kettle增量抽数
一、背景:1.业务系统无时间戳字段;2.业务系统到项目组服务器之间的网络带宽太慢,一次只能抽几十条数据(几十个字段的表);3.业务系统更新数据为直接更新,无更新标识字段,所幸有ModifyTime字段。二、措施:表输入:业务系统输入,只抽取两个字段,抽取速度可达10000条/秒表输入2:从抽过来的数据中找到最新的修改时间字段比对:过滤记录:保留增、改数据插入增、改数据...
2022-05-04 14:15:01
1547
原创 对linux用户做文件访问控制
#创建用户adduser zhifeiji#设置密码passwd zhifeiji#不允许该用户访问重要的目录setfacl -R -m u:zhifeiji:- /opt#使用新用户登录验证,无法进入对应目录#只允许该用户有可读可执行权限setfacl -R -m u:zhifeiji:rx/opt#不允许用户访问文件setfacl -m u:zhifeiji:- /iflytek/test.txt#使用新用户登录验证,无法对该文件查看和编辑#只允许该用..
2021-10-20 17:26:12
276
原创 mysql表损坏,无法启动
由于磁盘满了,停掉mysql服务,清理磁盘,重启mysql报错,查看日志,报错如下2021-07-13T09:01:02.803196Z 0 [ERROR] /opt/mysql/bin/mysqld: Table './mysql/db' is marked as crashed and should be repaired2021-07-13T09:01:02.803218Z 0 [ERROR] Fatal error: Can't open and lock privilege tables
2021-07-13 18:05:39
716
原创 rsyslog日志收集
背景:需要将日志集中收集到数据库rsyslog为centos自带的服务,现场环境为centos7,自带的rsyslog版本不同,有rsyslog7和rsyslog8,因为rsyslog-mysql驱动包只有rsyslog8有适配,需要将rsyslog7升级到rsyslog8一、升级rsyslog下载如下对应的rpm包:http://rpms.adiscon.com/v8-stable/epel-7/x86_64/RPMS/升级rpm -Uvh libestr-0.1.11-1.el7.x
2021-07-01 11:37:43
538
原创 服务器日志收集、分析
背景:1.《GBT+22239-2019+信息安全技术+网络安全等级保护基本要求》中8.1.5.4集中管控要求对分散在各个设备上的审计数据进行收集汇总和集中分析2.《中华人民共和国网络安全法》第二十一条规定日志保存6个月解决方案:使用开源平台 RSsyslog+mysql+LogAnalyzerRSsyslog是centos自带的组件,开启配置发送日志到mysql数据库即可,下下面详细介绍LogAnalyzer如何配置LogAnalyzer安装1.关闭防火墙#查看防火墙状态s
2021-06-25 16:51:57
1089
原创 firewall防火墙
firewall规则举例#开放100-120 tcp端口firewall-cmd --permanent --zone=public --add-port=100-120/tcpfirewall-cmd --reload#关闭100-120 tcp端口firewall-cmd --permanent --zone=public --remove-port=100-120/tcpfirewall-cmd --reload#对某个ip开放某个端口firewall-cmd --permanen
2021-06-11 23:50:34
238
1
原创 HDFS坏块处理
告警内容:Missing Blocks解决方法:1.重启HDFS服务./stop-dfs.sh ./start-dfs.sh 或者在某些产品的集群监控管理界面操作,比FI Manager、ClouderaManager、ambari等等重启后观察(重启时间较长,10-20分钟后查看),告警解除;2.如重启HDFS不能修复,可通过手动检查坏块并删除坏块hadoop fsck / #扫描坏块hadoop fsck -delete 坏块地址 #扫描坏...
2021-05-11 09:48:14
1547
原创 K8S状态为evicted
报错:xx is Evicted on xx主机查询找出Evicted状态节点kubectl get pods | grep Evicted删除节点,自动重启kubectl delete pod $podName也可以通过脚本定时执行kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete podxargs 是给命令传递参数的一个过滤器,可以将管道或标准输入的数据转换成参数原因
2021-02-22 10:36:57
910
原创 如何查看端口被哪个服务占用
以22端口为例,先获取到pidnetstat -ntlp| grep 22通过pid查看启动的服务ps -ef | grep 1457
2020-12-17 15:06:26
423
原创 Hive UDF—给函数添加版本迭代标识
背景:函数会有迭代的过程,对于处理相同字段,由于业务驱动,不同时期会有不同的处理方法,对于以前的函数规则要保留,后续规则要在此函数上迭代,就像体制内常用的,“旧人旧规则,新人新办法”,哈哈,规则可以同时进行。举例:举个与实际业务场景不相关的例子做参考,功能实现上是一样的对某字段使用base64加解密,代码如下import sun.misc.BASE64Decoder;import org.apache.hadoop.hive.ql.exec.Description;import
2020-11-17 00:21:51
268
原创 centos硬件信息查看
一、cpu信息查看CPU 的详细信息 (型号, 家族, 缓存大小等) :cat /proc/cpuinfo查看CPU型号:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看物理CPU的核数:cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l查看逻辑CPU的核数:cat /proc/cpuinfo |grep "processor"|wc -l查看CPU的主频:cat /p
2020-11-13 16:55:18
259
原创 Hive UDF—实现表比对
一、需求背景:源表oracle抽取数据到hive中,源表没有更新时间字段,也无法协调部门配置oracle redo log或者CDC,但是需要获取到变化的数据,并打上标签。此UDF技术点:每张表字段数不固定,如何写不定长函数,像concat,当然可以参考hive源码如何实现concat内置函数,下面使用HashMap存放函数不定长入参。二、代码实现:import java.util.HashMap;import java.util.Map;import org.apache.hadoo
2020-11-09 23:47:57
1067
原创 Hive桶表实践
桶表的好处1、方便抽样2、提高join查询效率下面会一一体现开启hive分桶有两种方式,一种方式如下,推荐这种方式set hive.enforce.bucketing = true;另一种需要手动指定reduce数量,并在导入到桶表的查询中做分桶查询(distribute by或者cluster by)。set mapreduce.job.reduces = num; --num数量和分桶数量一致...
2020-10-29 11:33:00
198
原创 VM桥接模式设置
一、网络适配器改为桥接模式 二、菜单栏=>编辑=>虚拟网络编辑器,配置如下我连接的是无线网,所以选择无线网卡,需要选择正在联网的网卡,插线联网需要选择有线网卡。
2020-10-29 09:03:24
245
原创 order by和sort by的区别
order by实现的是全局排序,在hive mr引擎中将会只有1个reduce。而使用sort by会起多个reduce,只会在每个reduce中排序,如果不指定分组的话,跑出来的数据看起来是杂乱无章的,如果指定reduce个数是1,那么结果和order by是一致的,如下图,不指定的情况,两种结果对比: order by一般配合group by使用,而group by需要配合聚合函数使用,举个例子而sort by分组时需要使用distribute by,和grou...
2020-10-27 16:32:20
22946
原创 Hive map-side Join
如果表join时,有一张表时小表,那么可以在最大的表通过mapper时将小标完全放倒内存中。Hive可以在map端执行连接过程,叫map-side Join。因为map可以和内存中的小标逐一匹配,从而省略掉常规连接操作所需要的的reduce过程。即使对于很小的数据集,这个优化也很明显的要快于常规的连接操作。补交减少了reduce的过程,有事还可以减少map过程的执行步骤。 在hive0.7之前的版本中可以通过指定小表来实现map join,如下select /*+ MAP...
2020-10-27 14:54:54
517
原创 深入了解spark sql的join
问1:left join和right join以及join有什么区别?答1:左关联会取左边所有数据,右关联相反,内关联会取满足on条件的数据。问2:那我join,left join时如何添加限制条件?答2:通过where或者and限制条件问3:那and和where限制条件时有什么区别?答3:懵逼中。。。。。。以上3个问答说到底面试官就是想知道到底有没有掌握join,因为hive join时很容易导致数据倾斜,只有进一步了解hive join才能避免这种情况。谓词下推, 顾名.
2020-10-26 17:33:42
956
原创 Hive的Multi-Inser
对于同一份数据导入两张不同的表,一般方法insert overwrite table info1 select * from info where sex='male'; insert overwrite table info2 select * from info where sex='female';上述方法会对同一张表全表扫描两次,而使用下面的方法,只需要扫描一次即可将数据导入两张不用的表,结果和上述方法一致from info insert overwrite table info
2020-10-23 10:52:21
783
原创 Hive分区表静态分区和动态分区使用
一、静态分区创建一张表create table info(id string,sex string,dt string);导入8条数据如下insert into info select '001','male','201001';insert into info select '002','female','201001';insert into info select '003','male','201002';insert into info select
2020-10-22 10:12:43
1261
原创 产品化的spark如何快速的把一张表数据导入到另一张表
背景:现在市面上有很多厂商将spark以及hadoop的生态组件产品化,在ui界面上拖拽来的组件里编写spark sql,或者写spark代码(java,scala,python),类似于传统的数据集成工具datastage,informatica,kettle,将各个组件连接起来组成工作流定时调度,像这样的产品比如联想LeapHD,数梦DTSphere Studio等等,这样的好处是降低大数据开发门槛,新人可以快速的上手工作,数据运维难度大大降低。但是带来的坏处是使用不灵活,下面讲一下在这样的产品中如
2020-10-19 17:30:54
819
1
原创 spark设置超时kill任务
背景:spark本身没有设置timeout的配置,数据开发团队sql on hadoop基础薄弱,很容易写出数据倾斜倾斜等消耗资源巨大的sql,而后其它任务全部卡死,考虑写脚本kill超时的任务,考虑到了如下3个方案1、spark-shell --kill,该方法只支持Spark standalone or Mesos with cluster deploy mode only,而大多数公司的场景是spark on yarn,该方法pass。2、spark源码中有个canceljob的接口,同.
2020-10-12 14:52:11
4192
7
转载 selenium常用的三种等待方式
一.强制等待使用方法:sleep(X),等待X秒后,进行下一步操作。第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间。缺点:不能准确把握需要等待的时间(有时操作还未完成,等待就结束了,导致报错;有时操作已经完成了,但等待时间还没有到,浪费时间),如果在用例中大量使用,会浪费不必要的等待时间,影响测试用例的执行效率。优点:使用简单,可以在调试时使用。示例:打开登录页面,等待3秒,进行登录操作,如
2020-09-30 15:24:34
1286
原创 使用jdbc连接Hive
一、hive提供了jdbc的连接方式,就是在hive的某个计算节点开启hiveserver2启动方法如下默认已启动hadoop先启动hive元数据服务hive --service metastore &再启动hiveserver2服务hive--servicehiveserver2 &验证:如下,已通过beeline连接上hiveserver2,证明服务已开启二、通过java jdbc连接hiveserver2将这两个jar包从服务器上的hive li..
2020-07-20 09:14:44
10731
原创 Hive reflect函数使用
经验证,reflect函数只能调用jdk中内置的静态方法。函数使用该函数是参数不定长函数,参数1填类名,参数2填静态方法名,后面填java方法的入参使用math工具类,在api中找几个静态方法验证找到类名作为reflect函数的第一个参数:java.lang.Math找到该类下面的静态方法写sql验证:入参不支持小数...
2020-07-13 15:35:30
1896
原创 如何克隆centos系统
一、软件准备centos系统链接:https://pan.baidu.com/s/1sFlMD0ZIAmjD4qZQLPPGpA提取码:kdx5VM软件链接:https://pan.baidu.com/s/1SgViqEtcejC-rl4OYxLSFw提取码:7ehw远程连接工具链接:https://pan.baidu.com/s/17GMiZAq27v_OvUklmsWQRg提取码:a5gd二、克隆系统用vm打开解压后的系统开机登录系统,账...
2020-05-28 23:38:36
1373
原创 2020-05-11
eclipse快捷键alt+shift+s+c 无参构造方法alt+shift+s+o 有参构造方法alt+shift+s+a get+set方法alt+shift+j javadoc
2020-05-11 22:20:29
340
原创 2020-05-11
supper和this的区别this指向对象本身,比如this.属性,this.方法,this表示它自身类的对象supper指向父类的对象,比如supper()表示调用父类无参构造方法,supper(参数)表示调用父类有参构造方法,supper.属性,supper.方法...
2020-05-11 22:16:38
166
原创 UDF函数开发
Hive有两个不同的接口编写UDF程序。一个是操作简单数据类型的UDF接口,一个是操作复杂类型的GenericUDF接口。UDF接口暂不讨论。下面看一个例子:ary建表语句:create table ary(array1 array<struct<id:string,name:string>>,array2 array<struct<add...
2018-08-17 17:32:56
2657
原创 hive解决中文乱码问题
execl保存为以逗号分隔的csv文件加载到hive表,查询时会出现中文乱码,可以建表时指定编码格式CREATE TABLE code(prod_spec_code string,prod_spec_name string,num string)ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'...
2018-07-21 22:02:48
1129
转载 mysql5.7设置简单密码报错
https://blog.youkuaiyun.com/kuluzs/article/details/51924374
2018-07-15 17:52:22
1010
转载 Hive动态分区
Hive分区(静态分区+动态分区)Hive分区的概念与传统关系型数据库分区不同。传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区。Hive的分区方式:由于Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并不是一个实际字段。所以可以这样理解,当我们在插入数据的时候指定分区,其实就是新建一...
2018-06-10 22:07:13
243
原创 查看yarn的日志
先去yarn的仪表盘找到application_id然后在linux命令行输入 yarn logs -applicationId application_id > yarn.logcat yarn.log可以查看日志了
2018-06-06 15:15:14
6224
转载 neo4j配置文件
# 修改第9行,去掉#,修改数据库名dbms.active_database=wkq_graph.db# 修改第12行,去掉#。修改路径,改成绝对路径dbms.directories.data=C:/WorkSpaces/Neo4j/# 修改9行和12行后,neo4j数据存放在 C:/WorkSpaces/Neo4j/databases/wkq_graph.db,没错,多了一个datab...
2018-06-03 15:14:32
3581
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人