- 博客(102)
- 收藏
- 关注

原创 使用Lambda表达式处理简单的业务
定义函数式接口一种只含有一个抽象方法声明的接口可以使用匿名内部类来实例化函数式接口的对象通过Lambda表达式可以进一步简化代码语法(paramenters) -> expression(paramenters) -> {statements;}步骤:1.新建一个接口2.新建一个Java类,继承创建的接口,并根据业务需求定义数据类型3.创建Java测试类,进行功能实现实例:1.根据学历和年龄来确定工资1)新建OperationInterface接口public i
2020-10-20 15:26:23
368

原创 sqoop的搭建
一、Sqoop安装安装Sqoop的前提是已经具备Java、Hadoop、Hive、Zookeeper和Hbase的环境具体的环境搭建可分别参考以下文章Hadoop环境配置Hive-Hbase伪分布式搭建Zookeeper的搭建1.下载并解压1)上传安装包sqoop-1.4.6-cdh5.14.2.tar.gz 到虚拟机中2)解压Scoop安装包到指定目录tar -zvxf sqoop-1.4.6-cdh5.14.2.tar.gz -C /opt/3)重命名mv sqoop-1.4.6-cd
2020-09-26 14:08:07
327

原创 zeppelin的安装配置
一、下载安装包http://zeppelin.apache.org/download.html选择zeppelin-0.8.1-bin-all.tgz二、上传并解压将安装包上传到虚拟机tar -zvxf zeppelin-0.8.1-bin-all.tgz -C /opt三、修改配置文件1.将文件改名,方便后续使用mv zeppelin-0.8.1-bin-all/ zpln2.进入zpln目录cd zpln/3.改名mv conf/zeppelin-site.xml.tem
2020-09-19 15:39:06
555

原创 Hive-Hbase伪分布式搭建
一.Hbase安装Hbase的前置安装条件是至少安装了Hadoop(若为单机版Hbase,zookeeper使用Hbase内置即可),若安装伪分布式或完全分布式则需要先安装zookeeper伪分布式Hadoop安装https://blog.youkuaiyun.com/qq_40333693/article/details/108391946完全分布式Hadoop安装https://blog.youkuaiyun.com/qq_40333693/article/details/108466908此篇文章使用伪分布式安装1
2020-09-15 16:22:24
381

原创 hadoopHA集群安装
1.集群2.zookeeper3.core-site.xmlname集群的名称zookeeper 2181地址4.hdfs-site.xmlnameservices集群下面的各个nameservice服务对应的映射rpc-address的地址9000http-address的地址50070journalnode的共享地址(各个datanode)qjournal://datanode:8485;列表/集群名出错处理,切换方式及隔离机制的设置5.yarn-site.xml允许ha
2020-09-08 20:19:07
189

原创 zookeeper的配置和集群时间的同步设置
一,集群时间同步配置大数据系统是对时间敏感的计算处理系统,时间同步是基础保障,是大数据得以发挥作用的技术支撑,所以需要保证所有机器时间同步1.确认是否安装过ntp: rpm -qa | grep ntp,若有的话使用:yum -y remove相关文件名命令卸载2.安装ntp: yum -y install ntp3.修改所有节点的ntp配置文件: vi /etc/ntp.conf,添加如下内容:对主机:#当前节点IP地址(server需要全部注释):restrict 192.168.233.
2020-09-05 16:34:59
873

原创 建立Hadoop与Java交互
一.创建maven项目建议与该文章配合阅读https://editor.youkuaiyun.com/md/?articleId=108391946本地Hadoop配置1.在windows安装hadoop解压hadoop-2.6.0-cdh5.14.2.tar.gz文件2.把hadoop-bin.rar中的内容解压到hadoop的bin目录下(注:由于解压缩软件的不同,再解压时可能需要提供管理员权限)3.把hadoop.dll放到C:\Windows\System32\目录下在Hadoop的bin目
2020-09-04 17:44:46
373

原创 hadoop基础配置
一.安装jdk和mysql输入:hostnamectl set-hostname cent04将机器改名新建software文件夹:mkdir /software进入software目录:cd /software/将需要的安装包拖入当前目录.安装jdk和mysql1)将jdk安装到opt目录下2)进入opt目录:cd /opt/3)将jdk改名:mv jdk1.8.0_221/ java84)修改配置文件:vi .etc/profile在文末添加export JAVA_HOME=
2020-09-03 20:06:52
476

原创 虚拟机及mysql的配置
查看网络配置vi /etc/sysconfig/network-scripts/ifcfg-ens33按a进入输入模式:修改BOOTPROTO属性为static修改ONBOOT属性为yes在最后一行添加IPADDR=192.168.xxx.xxx重启网络systemctl restart network关闭防火墙systemctl stop firewalld另外一种修改密码 vi /root/.mysql_secret在MobaXterm中:1、上传安装包:两个mysql\一个jdk
2020-08-10 19:04:43
761
原创 使用flume将csv文件写入到Kafka中
源数据文件:https://pan.baidu.com/s/1UiM8qmYY8MFKJaSLwIlPqQ提取码:apk61.在flume的conf目录下创建jobkb09目录:mkdir /opt/flume160/conf/jobkb092.进入jobkb09目录,在其中创建tmp目录,并将源数据文件均放入其中3.创建Kafka topic:events :kafka-topics.sh --create --zookeeper 192.168.134.104:2181 --topic ev
2021-01-13 19:38:28
1595
原创 安装flume
解压flume压缩包到指定目录内进入到flume的conf目录下复制flume-env.sh.template --> flume-env.shcp flume-env.sh.template flume-env.sh修改flume-env.sh文件export JAVA_HOME=/opt/java8export JAVA_OPTS="-Xms2048m -Xmx2048m -Dcom.sun.management.jmxremote"...
2021-01-13 19:12:26
345
原创 将HBase中的表数据导入到hive中
--------------------user_friend-----------------创建hb_user_friend外部表:create external table events.hb_user_friend(row_key string,user_id string,friend_id string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties('hbase.
2021-01-13 19:01:50
666
1
原创 使用设计模式将Kafka数据传入HBase
一.创建三个接口IParseRecord 接口:public interface IParseRecord { public List<Put> parse (ConsumerRecords<String, String> records);}IParseRecord 接口:public interface IWorker { public void fillData();}IWriter 接口:public interface IWriter {
2021-01-13 18:49:10
260
原创 Flink ProcessFunction API
DataStream API提供了一系列的Low-Level转换算子,可以访问时间戳、watermark以及注册定时事件,还可以输出特定的一些事件,例如超时事件等。Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之间的window函数和转换算子无法实现)Flink提供了8个Process Function:ProcessFunctionKeyedProcessFunctionCoProcessFunctionProcessJoinFunctionBroad
2021-01-05 14:00:28
132
原创 flume与java交互
在java工程中创建项目,内容如下:import org.apache.flume.Context;import org.apache.flume.Event;import org.apache.flume.interceptor.Interceptor;import java.util.ArrayList;import java.util.List;import java.util.Map;public class InterceptorDemo implements Intercept
2020-12-02 19:53:42
1132
原创 kafka基础学习
一.安装Kafka1.解压kafka文件链接: https://pan.baidu.com/s/1DT3GYDxApbKStaeNqr7biQ 提取码:hqiz1)解压压缩包:tar zxvf kafka_2.11-2.0.0.tgz2)将文件改名,方便以后操作:mv kafka_2.11-2.0.0 kafka2.112.修改配置文件1)进入kafka2.11目录下的config目录:cd /opt/kafka2.11/config/2)修改server.properties文件:vi s
2020-12-02 19:20:34
176
原创 使用IDEA进行简单的图处理
添加驱动: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-graphx_2.11</artifactId> <version>2.1.1</version> </dependency>package nj.zb.kb09.Graphimport org.apache.spa
2020-11-23 19:00:35
429
原创 初识graph图形化
为什么需要图计算许多大数据以大规模图或网络的形式呈现许多非图结构的大数据,常会被转换为图模型进行分析图数据结构很好地表达了数据之间的关联性图(Graph)的基本概念图是由顶点集合(Vertex)及顶点间的关系集合(edge)组成地一种网状数据结构通常表示为二元组://导入 spark Graph包import org.apache.spark.graphx._//创建 vertices 顶点rddval vertices = sc.makeRDD(Seq((1L,1),(2L,2),(
2020-11-23 18:57:41
356
原创 Spark数据项目实例一
源数据:https://pan.baidu.com/s/1rzEwBfR1m_lpZHekuEFnCg提取码:tgpf使用Spark完成下列日志分析项目需求:日志数据清洗用户留存分析活跃用户分析活跃用户地域信息分析用户浏览深度分析数据清洗1)读入日志文件并转化为RDD[Row]类型按照Tab其人格数据过滤掉字段数量少于8个的val line1 = linesRDD.map(x => x.split("\t"))val rdd = line1.filter(x => x.
2020-11-19 17:23:42
10487
1
原创 Spark数据项目实例二
源数据: https://pan.baidu.com/s/1deTScw6AFnhyHKGbyXiAqg提取码:ui7c1.将文件上传至hdfshdfs dfs -put /opt/kb09file/op.log /kb09file/2.导入两个依赖包import org.apache.spark.sql.types._import org.apache.spark.sql.functions._3.读取文件val fileRDD = sc. textFile("hdfs://hadoo
2020-11-19 16:42:32
509
1
原创 RDD算子(十)之PairRDD的Action操作countByKey,collectAsMap
countByKey将相同key值的数据进行计数以RDD{(1,2),(2,4),(2,5),(3,4),(3,5),(3,6)}为例,rdd countByKey会返回{(1,1),(2,2),(3,3)}scala版本val conf = new SparkConf().setMaster("local[1]").setAppName("CountByKey")val sc = new SparkContext(conf)val rdd = sc.parallelize(Array((1,2
2020-11-11 14:56:04
218
原创 RDD算子(九)基本的Action操作first、take、collec、count、countByValue、reduce、aggregate、fold、to
first返回第一个元素scala版本:val conf = new SparkConf().setAppName("First").setMaster("local[1]")val sc = new SparkContext(conf)val rdd = sc.parallelize(List(1, 2, 3, 3))println(rdd.first())java版本:SparkConf conf = new SparkConf().setMaster("local[1]").set
2020-11-11 14:52:23
568
原创 Spark RDD算子(八)subtractByKey,join,fullOuterJoin,rightOuterJoin,leftOuterJoin
scala版本: val conf = new SparkConf().setMaster("local[1]").setAppName("SubtractByKey") val sc = new SparkContext(conf) val rdd1 = sc.makeRDD(Array((1, 2), (3, 4), (3, 6))) val rdd2 = sc.makeRDD(Array((3, 9))) //subtractByKey 删除两个RDD中键相同的元
2020-11-11 14:41:12
313
原创 Spark RDD算子(七)groupByKey、cogroup
groupByKeygroupByKey会将RDD[key,value]按照相同的key进行分组,形成RDD[key,iterable[value]]的形式,有点类似于sql中的groupby,例如类似于mysql中的group_contact例:对学生成绩进行分组scala版本:val conf = new SparkConf().setMaster("local[1]").setAppName("GroupByKey")val sc = new SparkContext(conf)val s
2020-11-11 14:37:58
447
原创 spark RDD算子(五)之键值对聚合操作combineByKey
combineByKey聚合函数一般在集中式数据比较方便,如果涉及到分布式的数据集,该如何去实现呢;这里介绍一下combineByKey,这个是各种聚集操作的鼻祖简要介绍def combineByKey[C] (createCombiner: (V) => C,mergeValue: (C,V) => C,mergeCombiners: (C,C) => C): RDcerateCombiner:combineByKey()会遍历分区中的所有元素,因此每个元素的键要么还没有遇到
2020-11-11 14:31:08
245
原创 spark RDD算子(四)键值对RDD mapToPair、flatMapToPair
mapToPair例:在in/sample.txt文件中的内容为aa bb cc aa aa aa dd dd ee ee ee eeff aa bb zksee kksee zz zks将每一行的第一个单词作为键,1作为value创建pairRDDscala版本scala是没有mapToPair函数的,scala版本只需要map即可val lines = sc.textFile("in/sample.txt")val pairs = lines.map(x => (x.spli
2020-11-11 14:22:54
350
原创 spark RDD算子(三)distinct、union、intersection、subtract、cartesian
spark伪集合尽管RDD本身不是严格意义上的集合,但它也支持许多数学上的集合操作,比如合并和相交操作distinctdistinct用于去重,我们生成的RDD可能有重复元素,使用distinct方法可以去掉重读的元素,不过此方法涉及到混洗,操作开销很大scala版本:val RDD = sc.parallelize(List("aa", "aa", "bb", "cc", "dd"))val distinctRDD = RDD.collect()distinctRDD.foreach(pri
2020-11-11 14:16:37
629
原创 spark RDD算子(二)filter、map、flatmap
filter在本工程中,有如下路径的文件 in/sample.txt 内容如下aa bb cc aa aa aa dd dd ee ee ee eeff aa bb zksee kksee zz zks将包含zks的行的内容找出来scala版本val lines = sc.textFile("in/sample.txt").filter(x => x.contains("zks"))lines.collect().foreach(println)结果如下java版本Jav
2020-11-11 14:06:37
499
原创 spark RDD算子(一)parallelize,makeRDD,textFile
一、parallelize,makeRDD,textFile1.parallelize调用SparkContext的parallelize(),将一个存在的集合,变成一个RDD,这种方式适用于学习spark和做一些spark的测试scala版本def parallelize[T](seq:Seq[T],numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]: RDD[T])第一个参数一是一个Seq集合第二个参数是分区数返
2020-11-11 14:01:23
428
原创 RDD转换算子、行动算子
RDD转换算子对于转换操作,RDD的所有转换都不会直接计算结果仅记录作用于RDD上的操作当遇到动作算子(Action)时才会进行真正计算RDD常用的转换算子-1map算子对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD任何原RDD中的元素在新RDD中都有且只有一个元素与之对应输入分区与输出分区一一对应//将原RDD中每个元素都乘以2来产生一个新的RDDval a = sc.parallelize(1 to 9)val b = a.map(x => x * 2)a.
2020-11-04 19:11:51
773
原创 Apache-Spark基础及架构学习
为什么使用SparkMapReduce编程模型的局限性繁杂只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码处理效率低Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据任务调度与启动开销大不适合迭代处理、交互式处理和流式处理Spark是类Hadoop MapReduce的通用并行框架job中间输出结果可以保存在内存,不再需要读写HDFS比MapReduce平均快10倍以上Spark优势速度快基于内存数据处理,比MR快100个数量级以上(逻辑回归
2020-11-04 19:01:17
127
原创 在maven工程中创建scala项目
1.新建maven项目:File->Project->Maven->quickstart创建工程名更改User settings file文件:勾选上Override,找到maven的setting文件:D:\Program Files (x86)\apache-maven-3.6.1\conf\settings.xml;点击finish在porm.xml中添加修改以下依赖 <properties> <project.build.sourceEncod
2020-11-04 18:47:13
2157
原创 scala:求数组中最大值
val a = List(2,3,5,9,1,6,7)val b = a.par.aggregate(4)((x,y) => {println("sq:",x,y);if(x > y) x else y},(x,y) => {println("com",x,y);if(x > y) x else y})
2020-11-04 18:40:21
3430
原创 Scala连接jdbc
新建Scala项目MysqlDemoobject MysqlDemo {private val driver = "com.mysql.jdbc.Driver"private val url = "jdbc:mysql://192.168.134.104/scalademo" //scalademo数据库要已存在private val username = "root"private val password = "ok"private var connection: Connection =
2020-11-04 18:39:34
181
原创 单机式Spark环境配置
一.下载安装包1.下载Spark压缩包:选择较新的Spark2.4版本,下载地址https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.6.tgz 2.在Scala官网下载scala-2.11.12.tgz压缩包二,在虚拟机中解压文件1.将Scala压缩文件解压到opt目录下:tar -zxvf scala-2.11.12.tgz -C /opt2.将Spark压缩文件解压到opt目录下:tar -zx
2020-10-30 14:28:17
394
原创 Scala中的Array方法
val numbers = Array(1,2,3,4) //声明一个数组对象val first = numbers(0) //读取第一个元素numbers(3) = 100 //替换第四个元素为100val biggerNumbers = numbers.map(_*2) //所有元素乘2Scala提供了大量的集合操作++[B](that: GenTraversableOnce[B]): Array[B]合并集合,并返回一个新的数组,新数组包含左右两个集合对象的内容 val a = A
2020-10-29 16:28:35
5629
原创 Scala函数学习(三)
部分函数部分应用函数是 缺少部分参数的函数,是一个逻辑上的概念def sum(x: Int,y: Int,z: Int) = x+y+z在调用sum时,如果不提供所有参数,或者只提供某参数时,比如sum_,sum(3,_: Int,_: Int),sum(_: Int,3,4)这样就生成了所谓的部分应用函数实例1:(水位)def showMsg(title: String,content: String,num: Int): Unit = { println(title + ":" + con
2020-10-27 14:11:34
99
原创 协变和逆变
class CovariantAndContravariant {//协变点(covariant position)、逆变点(Inversion)、不变(Invariant)class Animal {def eat(): Unit = {println("动物要吃东西")}}class Cat extends Animal {override def eat(): Unit = println("猫吃鱼")}class Tiger extends Cat {override de
2020-10-23 17:22:58
111
原创 trait初学习
注意:在同一个包中,即使两个trait分别属于不同的类,其命名不能相同实例1:(汽车类)trait Type1 { def wheele: String = { "有四个轮子" } def run(): Unit}trait Type2 { def fly(): Unit = { println("可以飞") } def downSea(): Unit = { println("下海") }}abstract class Car { def brand: String
2020-10-23 16:47:22
193
原创 初学伴生类和伴生对象
伴生类和伴生对象应在同一个文件中,名字相同;class类称为object的伴生类,object称为class的伴生对象实例1:class Person(uname: String,Uage: Int) { println("class 进入到Person的class类中") var name: String = uname var age: Int = age private var address: String = "亚洲" def this() { //从构造方法 this("xx
2020-10-23 16:14:55
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人