1.基础排序算法 sc.textFile()).reduceByKey(_+_,).map(pair=>(pair._2,pair._1)).sortByKey(false).map(pair=>(pair._2,pair._1)).collect //key value交换 sc.setLogLevel("WARN") 2.二次排序算法 所谓二次排序就是指排序的时候考虑两个维度(有可能10次排序) Java版本 package com.dt.java.spark; imp…
主要围绕spark的底层核心抽象RDD进行理解.主要包括以下几个方面 RDD弹性分布式数据集的概念 RDD弹性分布式数据集的五大属性 RDD弹性分布式数据集的算子操作分类 RDD弹性分布式数据集的算子操作练习 1. RDD是什么 RDD(Resilient Distributed Dataset)叫做==弹性分布式数据集==,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合. Dataset: 就是一个集合,存储很多数据. Distributed:它内部的元素…
字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出流的父类,它定义了操作输出流的各种方法. 二.InputStreamReader类与OutputStreamWriter类 1.InputStreamReader是字节流通向字符流的桥梁.它可以根据指定的编码方式,将字节输入流转换为字符输入流. (1)构造方法有两种: InputStreamRead…
1.反射机制概述 Java反射机制是指程序在运行状态中,对于任何一个类,我们都能够知道这个类的所有属性和方法(包括private.protected等).对于任何一个对象,我们都能够对它的属性和方法进行调用.我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制. 在程序运行时,当一个类加载完成之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只会对应一个Class对象,绝对不会产生第二个),这个Class对象就包含了完整的类的结构信息.我们创建该类的对象后就可以通过这个对象…
1.为什么要用正则表达式 首先我们先来做一道题目:判断一个字符串是否由数字组成.代码示例如下: public class Test { public static void main(String[] args) { String str="5201314"; char[] chars = str.toCharArray(); boolean flag=true; for (int i=0;i<chars.length;i++){ if (chars[i]<'0'||cha…
jdk安装配置 首先下载JDK和JRE,这里你的需要看看你的Linux系统是多少位的,比如我的是64位的:下载JDK并指定到Download目录,JRE同样操作:解压并且配置环境: tar -zxvf jdk9.0 //解压命令 配置环境: vi /etc/profile JAVA_HOME=/usr/local/java/jdk9.0 #jdk存放位置 JRE_HOME=/usr/local/java/jre9.0 #jre存放位置 PATH=$PATH:$JRE_HOME/bin:$JAVA…
零.序(注意本部分与标题无太大关系,可直接调至第一部分) 既然没用为啥会有序?原因不想再开一篇文章,来抒发点什么感想或者计划了,就在这里写点好了: 前些日子买了几本书,打算学习和研究大数据方面的知识,一直因为实习.考试.毕业设计等问题搞得没有时间,现在进入了寒假,可以安心的学点有用的知识了. 这篇博客里的算法部分的内容来自<数据算法:Hadoop/Spark大数据处理技巧>一书,不过书中的代码虽然思路正确,但是代码不完整,并且只有java部分的编程,我在它的基础上又加入scala部分,当然是在…
一.代码实现 package big.data.analyse.scala.secondsort import org.apache.log4j.{Level, Logger} import org.apache.spark.sql.SparkSession /** 二次排序 * Created by zhen on 2019/5/29. */ class SecondSortByKey(val first:Int,val second:Int) extends Ordered[SecondSo…
先贴一张原理图(摘自hadoop权威指南第三版) 实际中看了半天还是不太理解其中的Partition,和reduce端的二次排序,最终根据实验来结果来验证自己的理解 1eg 数据如下 2014010114 标识20140101日的温度为14度,需求为统计每年温度的最最高值 2014010114 2014010216 2014010317 2014010410... Partition 实际是根据map 任务的key,以及reduce任务的数量来决定最终来由那个reduce来处理,默认指定redu…
最近在项目中遇到二次排序的需求,和平常开发spark的application一样,开始查看API,编码,调试,验证结果.由于之前对spark的API使用过,知道API中的sortByKey()可以自定义排序规则,通过实现自定义的排序规则来实现二次排序. 这里为了说明问题,举了一个简单的例子,key是由两部分组成的,我们这里按key的第一部分的降序排,key的第二部分升序排,具体如下: JavaSparkContext javaSparkContext = new JavaSparkContext…