![](https://img-blog.csdnimg.cn/20201023115415362.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大数据工程师成神之路
文章平均质量分 64
此专栏分享不限于大数据生态系统的各种计算引擎,存储方式、中间件等技术。
橙子园
落地生根,长成参天大树
展开
-
flink实战:flink自定义sink,以入solr、mongodb为例
自定义sink需要继承 RichSinkFunction,重写open、invoke、close三个方法,open方法主要实现一些公共资源的开启工作,如mongo、solr的连接客户端。invoke会在每条数据进入后调用,主要写一些数据的转化、插入、查询等具体的实际业务。这个查询了mongo中的数据,转化长对应的javaBean,更新了传入的javaBean以后,转化成document,存入mongodb。下面我给大家两个实例,一个是sink solr的,一个是sink mongo的。原创 2022-12-29 11:52:49 · 1337 阅读 · 2 评论 -
重学scala十:scala中的泛型
scala和Java一样,类和特质、方法都可以支持泛型。我们在学习集合的时候,一般都会涉及到泛型。定义一个Pair类包含2个类型不固定的泛型。在scala中,使用方括号来定义类型参数。1、定义一个泛型方法。原创 2022-09-26 21:25:26 · 569 阅读 · 0 评论 -
重学scala九:scala中的提取器
提取器是从传递给它的对象中提取出构造该对象的参数。(回想样例类进行模式匹配提取参数)scala 提取器是一个带有unapply方法的对象。unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。原创 2022-09-08 16:03:55 · 605 阅读 · 1 评论 -
重学scala八:scala中的异常处理
在scala中,可以使用异常处理来解决这个问题。在Scala里,借用了模式匹配的思想来做异常的匹配以下为scala中try…try中的代码是我们编写的业务处理代码在catch中表示当出现某个异常时,需要执行的代码在finally中,是不管是否出现异常都会执行的代码。执行程序,可以看到scala抛出了异常,而且没有打印出来"你好"。说明程序出现错误后就终止了。那怎么解决该问题呢?我们也可以在一个方法中,抛出异常。语法格式和Java类似,使用throw new Exception…原创 2022-09-08 15:59:29 · 1237 阅读 · 0 评论 -
重学scala七:scala中的模式匹配和样例类
scala有一个十分强大的模式匹配机制,可以应用到很多场合。java switch caseswitch语句类型查询以及快速获取数据并且scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配。原创 2022-09-08 15:02:50 · 484 阅读 · 2 评论 -
报错:Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.
下面为解决问题中报的错误:Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c. Caller xfs_free_extentInternal error xfs_trans_cancel at line 990 of flie fs/xfs/xfs_trans.c.xfs_repair: /dev/mapper/cl-root contains a mounted filesystem原创 2022-06-30 11:31:24 · 5191 阅读 · 6 评论 -
Prometheus+Grafana安装配置并配置linux服务器监控dashboard
prometheus是谷歌用golang语言开发的一款开源的监控软件,使用安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。Prometheus为了支持各种中间件以及第三方的监控提供了exporter,大家可以把它理解成监控适配器,将不同指标类型和格式的数据统一转化为Prometheus能够识别的指标类型。例如Node exporter主要通过读取Linux的/proc、/sys目录下的系统文件获取操作系统运行状态,redis exporter通过Reids原创 2022-06-18 23:51:07 · 2473 阅读 · 9 评论 -
重学scala:scala中的隐式转换和隐式参数
Scala提供的隐式转换和隐式参数功能,是非常有特色的功能。是Java等编程语言所没有的功能。它可以允许你手动指定将某种类型的对象转换成其他类型的对象,或是给一个类增加方法。通过这些功能,可以实现非常强大的功能。隐式转换其核心就是定义一个使用 implicit 关键字修饰的方法,实现把一个原始类转换成目标类,这样你可以调用目标类中的方法,是不是很强大。隐式转换的方法需要定义在一个object中。示例二:对自己定义的类使用隐式转换,普通人成为大佬结果:结果:它是指在函数或者方法中,定义一个用imp原创 2022-06-07 09:48:33 · 596 阅读 · 8 评论 -
重学scala:scala函数式编程与高阶函数
谈到编程方式有指令式编程、过程化编程、函数式编程,函数式编程在使用时主要的思想就是把运算过程写成一些列嵌套的函数调用。把一组数据通过函数实现运算转化成另一组数据。函数式编程这种方式在我们将来开发Spark、Flink的业务代码时会大量使用。下面列出了一些我们经常使用的进行函数式编程的Iterable trait(可迭代特质)方法。接口描述foreachAPI说明参数f: (A) ⇒ Unit接收一个函数对象,函数的输入参数为集合的元素,返回值为空返回值Unit空方原创 2022-06-05 19:39:18 · 1042 阅读 · 14 评论 -
flink-sql入es报错:Missing required options are document-type
我是在flink-sql创建es表的时候报的错,报错提示缺少对应的options,及document-type,我连忙去flink官方文档查找答案:https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/table/elasticsearch/#document-type从官方文档给出的连接参数可以看出document-type在es6中需要指定,而在es7中无需指定,原因大概是6.0版本及以前一个索引里可以创建原创 2022-06-02 18:23:40 · 1969 阅读 · 7 评论 -
重学scala:scala中的数据结构
注意:下面的例子均在scala shell中演示的一、数据结构介绍对于Scala来说,同时支持可变集合和不可变集合,不可变集合一直都不会发生变化,可以安全的并发访问。Scala优先采用不可变集合,同时几乎所有的集合类,Scala都同时提供了可变和不可变的版本。下面是两个主要的包:不可变集合:scala.collection.immutable、可变集合: scala.collection.mutable。不可变集合继承层次:可变集合继承层次:二、实操1、数组可以用数组来存放一组数据。s原创 2022-05-29 16:23:13 · 1065 阅读 · 0 评论 -
重学scala:scala中的变量、方法、函数
文章目录简介1、 scala中声明变量2、惰性变量3、基本数据类型4、scala类型层次结构5、scala中的条件表达式6、scala方法的重载7、scala中的块表达式8、循环1、for循环2、while循环9、方法和函数1、方法2、函数3、方法和函数的区别4、方法转换为函数提示:代码实例重点在于讲解知识点上,代码相对简单,所以都是使用scala shell来直接操作的简介Scala是一门多范式的编程语言,一种类似java的编程语言,是可扩展语言,并集成面向对象编程和函数式编程的各种特性的混合功能编原创 2022-05-27 09:49:20 · 1419 阅读 · 11 评论 -
重学scala:scala面向对象编程之trait特质
简介特质就像是java的implement,是scala中代码复用的基础单元,它可以将方法和字段定义封装起来,然后添加到类中与类继承不一样的是,类继承要求每个类都只能继承一个超类,而一个类可以添加任意数量的特质。特质的定义和抽象类的定义很像,但它是使用trait关键字1、作为接口使用使用extends来继承trait(scala不论是类还是特质,都是使用extends关键字)如果要继承多个trait,则使用with关键字trait B {...}trait C {...}class Dclas原创 2022-05-19 11:54:39 · 828 阅读 · 4 评论 -
重学scala:scala面向对象编程之继承
三、scala面向对象编程之继承1、继承extendsscala使用extends关键字来实现继承。可以在子类中定义父类中没有的字段和方法,或者重写父类的方法。示例1:实现简单继承class Person1 { var name = "super" def getName: String = this.name}class Student1 extends Person1object Main1 { def main(args: Array[String]): Unit =原创 2022-05-18 15:13:32 · 1501 阅读 · 7 评论 -
搭建大数据集群linux服务器配置步骤
1、IP设置使用下面命令修改添加示例内容命令:vi /etc/sysconfig/network-scripts/ifcfg-ensXX修改添加的内容示例:BOOTPROTO=staticIPADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=8.8.8.8# 设置开机启动网卡ONBOOT=yes重启网络服务service network restart2、关闭防火墙在root用户下执行以下命令关原创 2022-05-09 22:38:41 · 1859 阅读 · 16 评论 -
【大数据】带你理解并使用flink中的Time、Window(窗口)、Windows Function(窗口函数)
这篇文章带你理清大数据开发中flink中time、window使用概念、实战的内容,欢迎大家品读,同时示例代码也是基于最新的flink1.13开发。原创 2022-04-14 09:49:26 · 3746 阅读 · 33 评论 -
【大数据】带你理解flink的state概念
文章目录一、概述1、简介2、 State backend2.1、MemoryStateBackend2.2、FsStatebackend:2.3、 RocksDBStateBackend二、state的类型1、原生状态(raw state)2、托管状态(managed state)3、两种形式3.1 Operator State(算子状态)3.2 keyed State(键控状态)3.2.1、ValueState3.2.2、ListState3.2.3、MapState3.2.4、ReducingState原创 2022-04-12 11:30:06 · 1410 阅读 · 27 评论 -
【大数据】一文带你了解并使用阿里的增量日志解析工具canal
一、简介canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻原创 2022-04-06 18:42:51 · 3287 阅读 · 3 评论 -
linux安装zookeeper集群保姆教程,包括集群启停脚本
三台机器安装zookeeper集群注意事项:安装前三台机器一定要保证时钟同步说明:我这里是有3台服务器,分别hostname为node01、node02、node03。三台机器已经配置好了ssh。zookeeper使用的是cdh5的zookeeper包,没有使用原生zookeeper项目的包。三台机器已经进行了时钟同步。下载zookeeeper的压缩包,下载网址如下:http://archive.cloudera.com/cdh5/cdh/5/我下载的版本为:zookeeper-3.4.原创 2022-04-03 17:18:56 · 3832 阅读 · 2 评论 -
【大数据】flink保证Exactly_Once的理解
满足三点,可以保证端到端的Exactly_Once1.开启checkpoint2.source支持数据重发3.sink端幂等性写入、事务性写入。我们常使用事务性写入sink 事务性写入分为两种方式1、WAL(预写日志的方式):先将数据当作状态保存,当收到checkpoint完成通知后,一次性sink到下游系统2、2pc(两阶段提交):大致的实现的过程就是:* 开始事务(beginTransaction)创建一个临时文件夹,来写把数据写入到这个文件夹里面。* 预提交(preCommit)将内存原创 2022-04-03 11:39:20 · 4007 阅读 · 13 评论 -
flink问题集锦
报错一:Could not get job jar and dependencies from JAR file: JAR file does not exist: -yn原因:flink1.8版本之后已弃用该参数,ResourceManager将自动启动所需的尽可能多的容器,以满足作业请求的并行性。解决方法:去掉即可报错二:java.lang.IllegalStateException: No Executor found. Please make sure to export the HA原创 2022-03-18 18:27:27 · 4088 阅读 · 0 评论 -
【大数据】关于hive中删除操作及HDFS回收站管理腾出空间的实操
一、删除删除hive数据时,首先明确你使用删除数据还是连同表结构也要删除,如果只是要删除数据可以选择truncate来清空表中的数据,如果要对表进行删除,首先要考虑该表是内部表还是外部表。如果是外部表要确认数据是否还需要使用,如果不需要使用了可以直接使用HDFS命令对目录进行删除。查询内、外部表有两个方法:方法一:hive shell中执行describe extended tablename; 查看表的详细信息,外部表 tableType 字段会显示 EXTERNAL_TABLE,内部表 t原创 2022-02-17 10:11:38 · 6946 阅读 · 0 评论 -
【大数据】Hive可视化工具dbeaver
Hive可视化工具dbeaver1、dbeaver基本介绍dbeaver是一个图形化的界面工具,专门用于与各种数据库的集成,通过dbeaver我们可以与各种数据库进行集成通过图形化界面的方式来操作我们的数据库与数据库表,类似于我们的sqlyog或者navicat。2、下载dbeaver我们可以直接从github上面或者官网下载我们需要的对应的安装包即可https://github.com/dbeaver/dbeaver/releaseshttps://dbeaver.io/download/3原创 2022-02-05 12:15:49 · 20567 阅读 · 4 评论 -
【大数据】OLAP架构及技术实现的演进简介
文章目录一、架构分类二、技术演进1、传统关系型数据库时期2、大数据技术时期一、架构分类OLAP名为联机分析,又称多维分析,什么是多维分析,指的是多种不同的维度审视数据,进行深层次分析。进行分析必不可少对数据进行下钻、上卷、切片、切块、旋转等操作,为了更加直观,我们可以使用立方体来表示。下钻:从高层次向低层次明细数据穿透。例如从“省”下钻到“市”,从“浙江省”穿透到“杭州市”和“台州市”。上卷:和下钻相反,从低层次向高层次聚合。例如从“市”汇聚成“省”,将“杭州市”、“台州市”聚合成“湖北原创 2022-02-03 23:37:00 · 5793 阅读 · 13 评论 -
【ELK系列四】肝了两晚,你想要的elasticsearch内容放在这了
文章目录ES的核心概念及使用一、概述二、Elasticsearch核心概念索引 index类型 type映射 mapping文档 document字段Field接近实时 NRT集群 cluster节点 node分片和复制 shards&replicas三、Elasticsearch操作1、使用XPUT创建索引2、插入文档3、查询文档4、更新文档5、搜索文档6、删除文档7、删除索引8、条件查询8.1 使用match_all做查询8.2 关键字段进行查询8.3 bool的复合查询8.4 term、ter原创 2022-01-28 16:17:22 · 5258 阅读 · 19 评论 -
【大数据】HBase分布式数据库架构及原理
一、HBase的整体架构1、Client客户端Client是操作HBase集群的入口,对于管理类的操作,如表的增、删、改操纵,Client通过RPC与HMaster通信完成,对于表数据的读写操作,Client通过RPC与RegionServer交互,读写数据。Client类型:HBase shellJava编程接口Thrift、Avro、Rest等等2、ZooKeeper集群作用:1、实现了HMaster的高可用,多HMaster间进行主备选举2、保存了HBase的元数据信息meta原创 2022-01-27 23:16:27 · 2339 阅读 · 4 评论 -
【ELK系列三】服务器安装Kibana
服务器安装Kibana一、kibana的基本介绍Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互。你可以轻松地执行高级数据分析,并且以各种图标、表格和地图的形式可视化数据。Kibana使得理解大量数据变得很容易。它简单的、基于浏览器的界面使你能够快速创建和共享动态仪表板,实时显示Elasticsearch查询的变化。二、kibana的安装部署接着上一篇文章使用book用户在c原创 2022-01-22 20:51:26 · 665 阅读 · 3 评论 -
【ELK系列二】es的UI界面elasticsearch-head插件安装
安装elasticsearch-head插件由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面1、companynode01机器安装nodejsNode.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实原创 2022-01-21 13:56:53 · 4261 阅读 · 1 评论 -
【ELK系列一】ELK简介、elasticsearch安装部署
一、ELK的基本介绍1、ELK日志协议栈ELK是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供原创 2022-01-21 09:43:18 · 4004 阅读 · 4 评论 -
【大数据】Hive主流文件存储格式对比
Hive 主流文件存储格式对比1、存储文件的压缩比测试1.1 测试数据https://github.com/liufengji/Compression_Format_Datalog.txt 大小为18.1 M1.2 TextFile创建表,存储数据格式为TextFilecreate table log_text (track_time string,url string,session_id string,referer string,ip string,end_user_原创 2022-01-18 15:51:36 · 1640 阅读 · 7 评论 -
【大数据】hive使用split函数注意事项(此处可能有坑,初学者容易出错)
注意:我们经常会使用split对字符串做切分,但要注意一点,当原来的值为空值时,容易产生大小为1的空字符串数组[""],在我们查询时,它和空数组[]输出来是很相似的,但它的大小却是1,如果我们再根据array的size判断做一下操作时,很可能出现意想不到的错误。例如:one_cate_name工程科技哲学与人文科学;医药卫生科技社会科学ISELECT split(one_cate_name, ";") as split_name, size(split(one_原创 2022-01-14 14:53:40 · 2903 阅读 · 0 评论 -
hive在hue上使用udf时报错
报错信息:Error while compiling statement: FAILED: SemanticException [Error 10014]: line 1:55 Wrong arguments ‘zw_category_two’: No matching method for class com.medbook.assistant.ArrayIntegrationUDF with (array, array). Possible choices: FUNC(struct<>,原创 2022-01-14 10:55:51 · 2963 阅读 · 0 评论 -
【大数据】一文了解hive中开发、使用udf
我们在使用hive时难免会碰到hive的函数解决不了的操作,这时我们就可以开发UDF函数去解决复杂的问题。首先我们老生长谈一下udf函数分类:UDF : User-Defined Function (用户自定义函数)一进一出UDAF : User-Defined Aggregation Function(用户自定义聚合函数) 多进一出UDTF : User-Defined Table-Generating Function(用户自定义表生成函数)一进多出这里我们示例使用java来开发UDF函数,并原创 2022-01-13 15:53:10 · 2100 阅读 · 0 评论 -
yarn启动后一段时间关闭找不到进程id
yarn启动后一段时间想关闭找不到进程id原创 2021-12-29 17:55:37 · 1810 阅读 · 0 评论 -
hive判断空字符串数组和空数组
hive空字符串数组和空数组空字符串数组 :array(’’)空数组:array()如果想查找表中的空字符串数组:方法:可以使用查找数组中的第一个值是否为空字符串select classify from table where classify[0]='';想查找表中空数组:方法:使用size判断数据大小是否为0select classify from table where size(classify)=0;......原创 2021-12-24 18:37:08 · 5961 阅读 · 1 评论 -
【大数据】HBase集群安装部署
详细的HBase集群安装部署示例原创 2021-12-15 11:46:45 · 3181 阅读 · 0 评论 -
【大数据】hive将表中数据分组、然后将每行数据的两个字段拼接成json字符串,放到array里
将表中数据分组、然后将每行数据的两个字段拼接成json字符串,放到array里原创 2021-09-13 17:35:24 · 1889 阅读 · 0 评论 -
java中spark中map、flatmap等算子需要implement的接口,以及使用情况的简单说明
1、spark 的JavaRDD使用map、flatmap、filter等算子时,统一需要implement接口 org.apache.spark.api.java.function.Function使用方法:JavaRDD<CmaCoreMongoSpark> cma = cmaMongo .filter(new FilterCnMedicalPaperFunc()) .filter(new TimeFilterFunc(startTime, endTime原创 2021-09-10 17:08:17 · 969 阅读 · 0 评论 -
kafka常用维护查看shell命令(创建topic、查看、删除、生产者、消费者、消费者组offset)
1.kafka维护的一些命令:1.1创建topickafka-topics.sh --create --partitions 1 --replication-factor 2 --topic test --zookeeper companynode02:2181,companynode03:2181,companynode04:21811.2查询所有topickafka-topics.sh --list --zookeeper companynode02:2181,companynode03:21原创 2021-03-05 15:53:15 · 2601 阅读 · 0 评论 -
搭建学习使用的大数据集群环境:windows使用vmware安装三台虚拟机,配置好网络环境
安装三台linux服务器1. 安装VMWareVMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行多个Windows、DOS、LINUX系统。可以通过Vmware来安装我们的linux虚拟机,然后通过linux虚拟机来进行集群的安装。Vmware的安装步骤省略。只要点击安装之后,一路下一步即可,注意:尽量不要装在操作系统盘里面。2. 通过Vmware安装第一台linux机器通过Vmware安装第一台的linux机器,并给虚拟机挂载操作系统1:双击Vmware打原创 2020-12-22 16:50:50 · 2952 阅读 · 0 评论