- 博客(39)
- 收藏
- 关注
原创 SparkShuffle解析
Spark两种核心Shuffle:HashShuffleSortShuffle一、HashShuffle1.未经优化的HashShuffle在shuffleWrite阶段,也就是上层,每个task都会根据key进行hash划分,从而让相同hash值的key进入同一个blockfile文件,以供shuffleRead阶段的task拉取(溢写到磁盘形成blockfile之前,会先写入内存缓冲区中,填满后才可以溢写)。而blockfile的个数取决于下一个stage有多少个task,下游.
2021-11-11 15:38:20 1316 1
原创 Scala--闭包&柯里化
闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包object testFunc { def main(args: Array[String]): Unit = { def f1()={ var a:Int = 10 def f2(b:Int)={ a + b } f2 _ } // 在调用时,f1函数执行完毕后,局部变量a应该随着栈空间释放掉 val f =
2021-11-09 21:08:17 2588
原创 Hadoop支持LZO压缩及创建LZO索引
0. 环境准备maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)gcc-c++zlib-develautoconfautomakelibtool通过yum安装即可,yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool1. 下载、安装并编译LZOwget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.ta.
2021-10-11 21:03:01 382
原创 Flink--Table API 之表聚合函数(TableAggregateFunction)
自定义表聚合函数步骤如下:自定义一个类继承TableAggregateFunction类,实现三个方法:1.createAccumulator :用来初始化累加器2.accumulate:对于每一个新来的数据,调用该方法来更新累加器的值3.emitValue输出结果,使用 Collector对象的 .collect 方法输出例子:自定义一个表聚合函数,来更新获取每个传感器最大的两个温度/** * @program: flink2021 * @description: ${.
2021-09-27 20:01:20 863
原创 Flink --Table API 之聚合函数(AggregateFunction)
自定义聚合函数的步骤如下:自定义一个类,继承 AggregateFunction 类,实现其三个方法:1.createAccumulator :用来初始化累加器2.accumulate:对于每个输入的数据,调用该方法来更新累加器3.getValue: 获取累加器的值/** * @program: flink2021 * @description: ${description} * @author: Mr.G * @create: 2021-09-27 16:31 **..
2021-09-27 19:51:57 812
原创 Flink--Table API UDF函数之表函数
首先自定义一个类,继承TableFunction类,返回值类型由TableFunction的泛型决定,由protected collect 来发送结果数据。在Table API中,Table函数需要与.joinLateral或.leftOuterJoinLateral一起使用。在SQL 中,则需要 lateral table 来一起使用使用起来的结果有点类似 hive 的 lateral view/** * @program: flink2021 * @description:..
2021-09-27 15:46:18 595
原创 Flink--Table API UDF函数之标量函数
flink实现标量函数(scalarFunction)的方式是,自定义一个类,继承 ScalarFunction类,定义一个eval 函数,直接用def 不是override注意tableAPI的形式下,不需要注册该函数,可以直接调用实例化的对象但是在SQL形式下,需要先注册该函数/** * @program: flink2021 * @description: ${description} * @author: Mr.G * @create: 2021-09-27 13:31
2021-09-27 14:02:55 216
原创 Flink--Table API 和SQL入门案例
流式表处理的过程可以描述出下图:1.先把流转换成动态表 Stream=> table2.表经过一定操作,转成结果表 table (CRUD)=> table3.将表转换成流输出 table => Stream/** * @program: flink * @description: ${description} * @author: Mr.G * @create: 2021-09-26 19:21 **/package com...
2021-09-26 21:54:27 217
原创 Flink 实现端到端的exactly-once
在流处理中,一致性可以分为三个级别:1)at-most-once:最多一次,实际上就是对 不处理错误的委婉说法2)at-least-once:最少一次,这是最简单的处理错误的方法,当出现错误时,重发。最终结果可能会大于准确值,但绝不会小于准确值3)exactly-once:精确一次,这指的是系统发生错误时,也会得到准确的结果当spark-streaming实现exactly-once时,付出了性能代价。而flink在框架内部即保证了exactly-once,且不会牺牲很大的性能。之前我们
2021-09-24 12:06:48 514
原创 Flink的检查点(CheckPoint)算法
Flink检查点的核心作用是确保状态正确,即使遇到程序中断,也要正确。flink的检查点算法用到了一种特殊的数据类型checkpoint barrier (检查点分割线),在checkpoint barrier到来之前的所有状态更改都会存到该分割线所属检查点中,而在checkpoint barrier到来后的数据会存到下一个检查点中以下举例解析val stream: DataStream[(String, Int)] = ... val counts: DataStream[(Strin..
2021-09-23 21:58:29 1098
原创 Scala---使用foldLeft合并两个Map
首先来看一下foldLeft: def foldLeft[B](z: B)(op: (B, A) => B): B = { var result = z this foreach (x => result = op(result, x)) result }
2021-06-01 14:34:52 831
原创 Spark---通过集合创建RDD指定分区数源码分析
Spark—通过集合创建RDD指定分区数源码分析首先来看一下通过集合创建RDD指定分区数的代码:object test03_RDDmem { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("test03_RDDmem") val sc: SparkContext = new SparkContext(co
2021-04-21 19:29:30 224
原创 Spark--默认创建RDD的分区个数规则
Spark–默认创建RDD的分区规则创建RDD的三种方式1)从集合(内存)中创建 方法:parallelize、makeRDD2)从外部存储中创建 方法:testFile3)从其他RDD中创建(执行转换算子的时候)1)从集合(内存)中创建 方法:parallelize、makeRDD1、首先来看一下这种方式创建的RDD是怎样的分区规则代码:object test02_RDDDefalutPatirion { def main(arg
2021-04-20 14:33:57 935 1
原创 Hive--DDL之创建表(内外部表,分区表)
Hive——DDL之创建表(内外部表,分区表)DDL之创建表命令1.内部表(管理表)1)普通命令创建2)根据查询结果创建3)根据已经存在的表创建表结构2.外部表1)使用命令创建2)使用desc命令查看表3)drop掉外部表,查看HDFS上表数据4)内部表和外部表互相转换3.分区表1)普通命令创建分区表2)静态分区插入3)动态分区插入DDL之创建表命令CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMM
2021-03-01 15:12:38 1605
原创 MySQL--case when的用法 以及 利用case when 和 group by 实现行转列
MySQL–case when的用法在MySQL中case when有两种用法:1.简单函数CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END2.搜索函数CASE WHEN [expr] THEN [result1]…ELSE [default] END简单函数:CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END这种用法就是 匹配列的值,
2021-02-20 15:48:21 2244 3
原创 MySQL5.7版本使用变量实现窗口函数 row_number、dense_rank、rank
MySQL5.7版本使用变量实现窗口函数在MySQL5.7版本中使用变量来实现8.0和Hive中有的窗口函数row_number 和 dense_rank 和 rank的区别row_numberdense_rankrank在MySQL5.7版本中使用变量来实现8.0和Hive中有的窗口函数row_number 和 dense_rank 和 rank的区别1)row_number有相同的数据,会递增2)dense_rank有相同的数据时,可以出现并列的情况,并且下一个排名只增加1位,即 1 1
2021-02-05 16:02:47 4739
原创 MySQL5.7版本密码忘记,导致报错1045,无法登陆或连接MySQL,怎么修改密码:
MySQL5.7版本密码忘记,导致报错1045,无法登陆或连接MySQL,怎么修改密码:1、首先停止MySQL服务,直接右键停止服务2、首先在指定路径下打开一个cmd窗口,如果配置了MySQL环境变量,可随意位置打开3、输入命令 mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --skip-grant-tables 请注意路径,这个路径是你的my.ini文件在什么位置,我这里是...
2020-12-10 10:22:42 263
原创 hadoop集群问题合集(八) 初始化namenode报错:xml document structures must start 。。。。。。
hadoop集群问题合集(八) 初始化namenode报错:xml document structures must start 。。。。。。初始化namenode报错:xml document structures must start 。。。。。。这个错误是说你的配置文件,是xml文件,但是你的配置文件缺少了关键的xml标签。比如:最开头的xml标签都没了。在文件最前边加上下边这两句:<?xml version="1.0" encoding="UTF-8"?>.
2020-05-18 19:41:32 3386
原创 hadoop集群问题合集(七)初始化namenode报错:The markup in the document following the root element must be well-form
hadoop集群问题合集(七)初始化namenode报错:The markup in the document following the root element must be well-formed初始化namenode报错:The markup in the document following the root element must be well-formed如下这个就是说你的这个配置文件,里边没写全标签,比如<configuration>对应的</conf
2020-05-18 19:40:03 2233
原创 hadoop集群问题合集(六) namenode启动不了。查看日志显示storage directory doesn’t exist or is not accessible
hadoop集群问题合集(六) namenode启动不了。查看日志显示storage directory doesn’t exist or is not accessible如果启动日志显示了storage directory doesn’t exist or is not accessible,如图:这种情况一般都是因为你以前的某些操作,不是当前登录的用户操作的,多见为root用户,导致现在的用户并没有操作的权限。解决方案:找到这个目录,通过ll可以看到用户的属主,这个涉及到linux用户
2020-05-18 19:38:51 1577
原创 hadoop集群问题合集(五)java.io.FileNotFoundException: /home/hadoop01/data/hadoopdata/name/in_use.lock (Permi
hadoop集群问题合集(五)java.io.FileNotFoundException: /home/hadoop01/data/hadoopdata/name/in_use.lock (Permission denied)如果启动日志显示了java.io.FileNotFoundException: /home/hadoop01/data/hadoopdata/name/in_use.lock (Permission denied)说明你的集群上次并没有正常退出!!!解决方案:直接删除图
2020-05-18 19:37:18 782
原创 hadoop集群问题合集(四) namenode启动不了。查看日志显示 port in use : 0.0.0.0 : 50070
hadoop集群问题合集(四) namenode启动不了。查看日志显示 port in use : 0.0.0.0 : 50070如果namenode节点没有启动,查看启动日志发现报错如下:解决方案:打开linux的地址映射文件(vim /etc/hosts),显示是不是这个样子?但是前边需要加上两行:127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1...
2020-05-18 19:35:00 2893
原创 hadoop集群问题合集(三) datanode启动不了。查看日志显示 incompatible clusterIDs in xxxxxx
hadoop集群问题合集(三) datanode启动不了。查看日志显示 incompatible clusterIDs in xxxxxx关于DataNode启动不了的问题:如果jps发现自己的datanode没能启动,查看启动日志发现如图所示的错误,那么说明你的一定做过类似重新初始化namenode的操作,导致两次iD不一样。解决方案:重新初始化我们的namenode即可。但是这个初始化有一个操作步骤。步骤:1、关掉各节点进程和集群2、先清空data和name的内容3、初.
2020-05-18 19:24:37 791
原创 hadoop集群问题合集(二) hadoop已经正常启动,但是浏览器访问并无显示
hadoop集群问题合集(二) hadoop已经正常启动,但是浏览器访问并无显示假如我们的hdfs已经正常启动了(即namenode、DataNode。Resourcemanager等都已经正常启动了),但是在浏览器输入hadoop01:50070并没有任何显示:如图: 解决方案:请检查自己的虚拟机是否安装了httpd服务,并检查是否启动,防火墙记得关闭,或者需要开放相应端口。...
2020-05-18 16:53:10 4093 2
原创 hadoop集群问题合集(一)之前提: hadoop启动日志怎么查看
hadoop集群问题合集(一) hadoop启动日志怎么查看每次通过start-dfs.sh 或者start-yarn.sh 启动的时候,系统都会写启动日志,当你jps发现缺少某些进程的时候,可以查看日志得到反馈修改错误。这是非常好用的技巧!!!那下边说一下怎么看启动日志:如图比如这张图:strat-dfs.sh以后,jps发现没有namenode。在图片的第三行也可以发现这些都是写启动日志的反馈,看到logging to xxxxxx,这个位置,就是我们的启动日志存放的位置,但不是这个.out
2020-05-18 16:50:11 4597 2
转载 java————获取两个字符串的最大子串
方法一:代码较长,理解起来简单,public class Test2 { public static void main(String[] args) { String str1 = "abcwerthelloyuiodef"; String str2 = "cvhellobnm"; // 先看谁长,长的等待短的减少长度作比较 if (str1.length() >=...
2019-08-13 21:39:33 826
原创 java的异常和throw, try...catch
throw/throws抛出异常作用:可以在方法中手动抛出异常用throw,该方法也要在方法名后抛出异常用throws,但是该方法被调用的时候,调用该方法的方法同时也要抛出异常throws,也就是向上一层一层抛出。格式:throw new Exception(“错误消息提示”); public class Test {public static void mai...
2019-08-10 15:18:46 299
转载 java的非静态内部类中不能有静态成员,但是可以有静态常量
1.非静态内部类是依附于外部类的, 非静态内部类的使用需要实例化外部类后去调用。2.非静态内部类中的静态成员是可以通过类调用的,也就是说 非静态内部类.静态成员 但是非静态内部类又不能直接使用,这显然矛盾。3.非静态内部类中的静态常量可以编译正常的原因是:静态常量的加载是不需要类加载的。参考:https://www.jianshu.com/p/4dbe68850e1b?from...
2019-08-08 09:02:08 340
原创 java中产生随机数的两种方式 : Math.random() 和 Random类
记录一下初学的产生随机数的两种方式;1.Math.random() while(true) { double d = Math.random(); System.out.println(d); }输出的结果:0.90095433278086430.114032273711429320.18533703092424080.94450376...
2019-08-03 16:09:33 2044
转载 java学习思维导图---转
java基础知识面向对象常用API集合IO多线程、网络编程、反射、设计模式转自https://www.cnblogs.com/java1024/p/8757952.html 感谢分享
2019-08-03 08:55:53 272
原创 java入门编程之银行存取款小程序
初学java,做课后练习遇到的题目。。。。要求1、写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;包含的方法:访问器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。 Account private int...
2019-07-30 20:47:50 3759
原创 类的成员--属性 属性的类型
类型: 1.基本数据类型: 整型:byte、short、int、long 默认值是0 浮点型:float、double 默认值是0.0字符型:char 默认值是 空格布尔型:boolean 默认值是false 2.引用数据类型: (类,数组,接口等) 默认值是null;...
2019-07-29 20:30:00 1317
转载 盲区:关于java中的属性和成员变量
这几天学习一直以为属性和成员变量之间只是换了一种说法,但是从csdn查了几篇文章后,发现这种说法并不准确。属性的定义是在get、set方法去掉了get、set之后,剩下的变量名小写之后叫做属性,而成员变量在类中定义即成成员变量。也就是可能成为不了属性,而属性也可能并不一定会在类中定义;参考:https://blog.csdn.net/sinat_34137390/article/detai...
2019-07-29 20:19:39 206
原创 访问权限修饰符public、protected、默认和private的区别
public(公共) 所有类都可以调用protected (受保护的) 在本类、本包和子类中可以使用默认 本类和本包中可以使用private (私有的)只有本类中可以使用能够修饰类的访问权限修饰符只有public 和默认访问权限修饰符可以修饰类的成员、成员变量; 局部变量不可以用访问权限修饰符,且修饰符中只能使用final;...
2019-07-29 20:16:35 948
原创 java中一维数组、二维数组的定义和使用
一维数组的定义://动态初始化 int []a; int b[]; int []c=new int [3]; int d[]=new int [3]; //通过下标赋值 //a,b这种定义方式必须在使用前给a,b声明长度,否则编译会出问题: //(The local variable a may not have been initialized)。 //静态初始化...
2019-07-27 10:18:39 3788
原创 关于复制数组方法system.arraycopy方法的疑惑、
初学java,简单提到了数组赋值,于是自己动手代码实践联系一下。首先使用了system.arraycopy()这个方法,在一维数组中的使用十分简单方便。int []a= {1,2,3,4}; int []b=new int [a.length]; System.arraycopy(a, 0, b, 0, a.length); a[2]=8; System.out.println(Ar...
2019-07-26 21:02:24 635
原创 java中检测输入是否合法的方法
public class TestInput { public static void main(String[] args) { System.out.println("请输入一个整数:"); int num = 0; while (true) { Scanner input = new Scanner(System.in); if (input.hasNextI...
2019-07-25 20:08:13 9009
原创 关于java的转义符\n和 \r和 \r\n和 \n\r
System.out.print("\\n的效果\n"); System.out.print("\\r的效果\r"); System.out.print("\\r\\n的效果\r\n"); System.out.print("\\n\\r的效果\n\r"); System.out.print("结束");输出的结果是\n的效果\r的效果\r\n的效果...
2019-07-25 19:19:47 4641 1
原创 关于JAVA中的public static void main (String[] args)
在学习java的时候,每次书写public static void main (String[] args)并不能理解其含义和使用方法,在浏览菜鸟教程时看到四篇笔记得到些许启发。https://www.runoob.com/java/java-tutorial.html当使用控制台编译运行时javac Test.javajava Test aaa bbb ccc...
2019-07-23 20:42:07 762
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人