- 博客(95)
- 收藏
- 关注
原创 在 Sublime Text 4 for macOS 中使用多个光标
在 Sublime Text 4 for macOS 中使用多个光标仅使用触控板的情况下怎么实现鼠标中键呢
2023-12-04 15:38:22 755 1
原创 时间工具类
package com.huc.utils;import java.time.*;import java.time.format.DateTimeFormatter;import java.util.Date;/** * LocalDate 年月日 * LocalTime 时分秒 * LocalDateTime 年月日 时分秒 */public class DateTimeUtil { private final static DateTimeFormatter for
2022-03-27 14:14:08 407
原创 SpringBoot中常见注解@Controller@ResponseBody@RestController@RequestMapping@RequestParam
package com.huc.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;//@Controller// 将类标识为Controller层
2021-12-01 11:20:40 479
原创 SQL中求两日期的天数差值 DATEDIFF()
select DATEDIFF(“2020-12-10”,“2020-12-11”)结果为:-1select DATEDIFF(“2020-12-12”,“2020-12-11”)结果为:1
2021-11-05 23:39:27 1755
原创 Spark SQL中DataFrame和DataSet之间相互转换
package com.huc.sparkSqlimport org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object Test04_DSAndDF { def main(args: Array[String]): Unit = { // 1. 创建sparkSession配置对象 v
2021-11-04 23:23:40 1270
原创 Spark SQL中RDD和DataSet之间相互转换
package com.huc.sparkSqlimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}/** * 1.RDD 转换为DataSet * RDD.map{x=>User(x._1,x._2)}.toDS() * SparkSQL 能够自动将包含
2021-11-04 23:22:22 1506
原创 SparkSQL中RDD和DF之间相互转换
package com.huc.sparkSqlimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, Row, SparkSession}import org.apache.spark.{SparkConf, SparkContext}/** * 1.RDD 转换为DataFrame * 手动转换:RDD.toDF("列名1","列名2") * 通过样例类反射转换:UserRDD.map{x=>U
2021-11-04 23:21:50 2426
原创 SparkSQL中自定义函数之UDAF
package com.huc.sparkSqlimport org.apache.spark.SparkConfimport org.apache.spark.sql.expressions.Aggregatorimport org.apache.spark.sql.{DataFrame, Encoder, Encoders, SparkSession, functions}object Test07_UDAF { def main(args: Array[String]): Unit =
2021-11-04 22:31:38 297
原创 SparkSQL中自定义函数之UDF
package com.huc.sparkSqlimport org.apache.spark.SparkConfimport org.apache.spark.sql.{DataFrame, SparkSession}object Test06_CustomUDF { def main(args: Array[String]): Unit = { // 1. 创建sparkSession配置对象 val conf: SparkConf = new SparkConf().se
2021-11-04 22:30:35 201
原创 SparkSQL数据的保存
package com.huc.sparkSqlimport org.apache.spark.{SPARK_BRANCH, SparkConf}import org.apache.spark.sql.{DataFrame, DataFrameReader, SaveMode, SparkSession}object Test10_Write { def main(args: Array[String]): Unit = { // 1. 创建sparkSession配置对象 v
2021-11-04 22:29:53 443
原创 SparkSQL数据的加载
package com.huc.sparkSqlimport org.apache.spark.SparkConfimport org.apache.spark.sql.{DataFrame, DataFrameReader, SparkSession}object Test09_Read { def main(args: Array[String]): Unit = { // 1. 创建sparkSession配置对象 val conf: SparkConf = new Sp
2021-11-04 22:29:20 199
原创 spark中使用Scala来写自定义分区器
自定义分区器HashPartitioner源码解读: /*class HashPartitioner(partitions: Int) extends Partitioner { // 传进来的分区个数必须是大于等于0的,不然它会报错 require(partitions >= 0, s"Number of partitions ($partitions) cannot be negative.") // 重写分区器的抽象方法 // 记录它有多少个分区 就是外面
2021-10-30 08:56:50 480
原创 combineByKey()转换结构后分区内和分区间操作
1)函数签名:def combineByKey[C](createCombiner: V => C,mergeValue: (C, V) => C,mergeCombiners: (C, C) =>C): RDD[(K, C)](1)createCombiner(转换数据的结构): combineByKey() 会遍历分区中的所有元素,因此每个元素的键要么还没有遇到过,要么就和之前的某个元素的键相同。如果这是一个新的元素,combineByKey()会使用一个叫作createCo
2021-10-30 08:56:09 206
原创 aggregateByKey()按照K处理分区内和分区间逻辑
需求:取出每个分区中相同key对应的最大值,然后相加代码实现package com.huc.Spark.KeyAndValueimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object Test04_aggregateByKey { def main(args: Array[String]): Unit = { //1.创建SparkConf并设置App名称
2021-10-29 22:14:06 175
原创 foldByKey()分区内和分区间相同的aggregateByKey()
1)函数签名:def foldByKey(zeroValue:V)(func:(V,V)=>V):RDD[(K,V)]// 参数zoreValue:是一个初始化值,它可以是任意类型// 参数func:是一个函数,两个输入参数相同2)功能说明:aggregateByKey的简化操作,seqop和combop相同。即,分区内逻辑和分区间逻辑相同。3)需求:求相同Key的value和,最大值4)代码实现:package com.huc.Spark.KeyAndValueimport o
2021-10-29 22:13:39 183
原创 reduceByKey()按照Key聚合Value
1)函数签名def reduceByKey(func:(V,V)=>V):RDD[(K,V)]def reduceByKey(func:(V,V)=>V,numPartitions:Int):RDD[(K,V)]2)功能说明:该操作可以将RDD[K,V]中的元素按照相同的K对V进行聚合。其存在多种重载形式,还可以设置新RDD的分区数。3)需求说明:统计单词出现的次数4)代码实现package com.huc.Spark1.KeyAndValueimport org.apache
2021-10-29 22:13:03 487
原创 reduceByKey、foldByKey、aggregateByKey、combineByKey
老大:combineBykey有初始值,并且初始值还支持改变数据结构,最灵活combineByKeyWithClassTag(createCombiner, mergeValue, mergeCombiners, partitioner, mapSideCombine, serializer)(null)// 3.4 使用combinebykey求平均值 val list: List[(String, Int)] = List(("a", 88), ("b", 95), ("a"
2021-10-29 22:12:22 397
原创 distinct()去重
distinct算子1)函数签名def distinct():RDD[T] //默认情况下,distinct会生成与原RDD分区个数一致的分区数2)功能说明:对内部的元素去重,并将去重后的元素放到新的RDD中。3)源码解析:4)函数签名:def distinct(numPartitions:Int)(implicit ord:Ordering[T]=null):RDD[T]//可以去重后修改分区个数代码实现package com.huc.Spark.valueimport or
2021-10-29 14:51:00 646
原创 sample()采样
1)函数签名def sample( withReplacement:Boolean, faction:Double, seed:Long=Utils.random.nextLong):RDD[T]//withReplacement:true为有放回的抽样,false为无放回的抽样;//fraction表示:以指定的随机种子随机抽样出数量为fraction的数据;//seed表示:指定随机数生成器种子2)功能说明从大量的数据中采样3)需求说明:创建一个RDD(1-10),从中选择放
2021-10-29 14:50:35 433
原创 filter()过滤
1)函数签名def filter(f:T=>Boolean):RDD[T]2)功能说明接受一个返回值为布尔类型的函数作为参数。当某个RDD调用filter方法时,会对该RDD中的每一个元素应用f函数,如果返回值类型为true,则该元素会被添加到新的RDD中。3)需求说明:创建一个RDD,过滤出对2取余等于0的数据4)具体实现package com.huc.Spark.valueimport org.apache.spark.rdd.RDDimport org.apache.spar
2021-10-29 14:49:55 217
原创 groupBy()分组
groupBy算子1)函数签名def groupBy[K](f:T=>K)(implicit kt:ClassTag[K]):RDD[(K,Iterable[T])]2)功能说明分组,按照传入函数的返回值进行分组。将相同的key对应的值放入一个迭代器3)需求说明:创建一个RDD,按照元素模以2的值进行分组。4)具体实现:package com.huc.Spark.valueimport org.apache.spark.rdd.RDDimport org.apache.spark
2021-10-29 14:49:29 707
原创 Spark转换算子--golm()分区转换数组
1)函数签名:def glom():RDD[Array[T]]2)功能说明该操作将RDD中每一个分区变成一个数组,并放置在新的RDD中,数组中的元素的类型与原分区中的元素类型一致3)需求说明:创建一个2个分区的RDD,并将每个分区的数据放到一个数组,求出每个分区的最大值4)具体实现:package com.huc.Spark1.valueimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkCon
2021-10-29 14:48:21 666
原创 spark转换算子-flatMap()扁平化
1)函数签名:def flatMap[U:ClassTag](f:T=>TraversableOnce[U]):RDD[U]2)功能说明与map操作类似,将RDD中的每一个元素通过应用f函数依次转换为新的元素,并封装到RDD中。区别:在flatMap操作中,f函数的返回值是一个集合,并且会将每一个该集合中的元素拆分出来放到新的RDD中。3)需求操作:创建一个集合,集合里面存储的还是子集合,把所有子集合中数据取出放入到一个大的集合中。4)具体实现:package com.huc.Spar
2021-10-29 14:46:33 1258
原创 Scala WorldCount案例2(将集合中出现的相同的单词,进行计数,取计数排名前三的结果)
package com.huc.WordCountobject WordCount3 { def main(args: Array[String]): Unit = { // 原始数据 val tupleList = List(("Hello Scala Spark World ", 4), ("Hello Scala Spark ", 3), ("Hello Scala ", 2), ("Hello ", 1)) // 步骤一:转换为(单词,次数),(单词,次数)的格式
2021-10-26 21:30:02 415
原创 Scala WordCount案例1(将集合中出现的相同的单词,进行计数,取计数排名前三的结果)
package com.huc.WordCountobject WordCount1 { def main(args: Array[String]): Unit = { // 需求:将集合中出现的相同的单词,进行计数,取计数排名前三的结果 val stringList = List("Hello Scala Hbase kafka", "Hello Scala Hbase", "Hello Scala", "Hello") // 步骤一:扁平化拆分成长字符串 val
2021-10-26 21:29:19 498
原创 Java和Scala中的面向对象思想的区别
Java和Scala中的面向对象思想的区别Scala 的面向对象思想和Java的面向对象思想和概念是一致的。封装:**在Java当中,**先把属性写成私有的,然后给它添加get和set方法,把它封装起来,把属性和方法结合在一起就是封装了**在Scala当中,**属性底层就已经带有get和set方法了,只是它写出来不是get和set,它是用“ . ”点,的这种方式来给它实现的。如果想要它和Java的那些框架兼容的话,需要有明文的get和set方法,需要给它加注解,@BeanProperty,这就是Sc
2021-10-23 10:05:29 151
原创 Scala 初步使用,参数介绍
Scala 初步使用,参数介绍package com.huc.chapter01/** * 在Scala里面 * object(和Java里面的静态对应)里面所有的东西都是静态的,而class里面都不是静态的 * 在使用过程中,我们也不说它是静态的,而是给它取了个名字,叫伴生对象 */// 伴生对象的方法 如果没有伴生类对应,那就叫它单例对象(这玩意也可以直接运行)// 以后如果写一个main方法的话,它是静态的就写在Object里面// 不是静态的,就写在Class里面/
2021-10-22 15:01:42 191
原创 IDEA快捷键
IDEA快捷键1)快速生成程序入口:main输入main->回车def main(args: Array[String]): Unit = {}2)自动补全变量:.var输入1.var->回车val i: Int = 23)快速打印:.sout输入1.sout->回车println(1)4)快速生成for循环:遍历对象.for输入1 to 3.forfor (elem <- 1 to 3) {}3) 查看当前文件的结构:Ctrl +
2021-10-22 12:57:11 312
原创 Scala 中高阶函数的简单使用
Scala 中高阶函数的简单使用object Test01_HighFunc { def main(args: Array[String]): Unit = { // 对于一个函数,我们可以:定义函数,调用函数 def sayHi(name: String): String = { println(s"Hi $name") s"hi $name" } sayHi("linhai") // 但是其实函数还有更高阶的用法 // 1
2021-10-20 10:58:20 213
原创 计算机中int、byte值转换分析,原码补码分析
计算机中int、byte值转换分析,原码补码分析object Test07_TypeCast { def main(args: Array[String]): Unit = { // 将int值130强转为byte 值为多少 // 0000 0000 1000 0010 => 表示int的130 val i4 = 130 // 1000 0010 => 表示byte的130 /** * 个人理解: * 100
2021-10-20 08:39:55 172
原创 Scala 中函数至简原则的细节推断
Scala 中函数至简原则的细节推断object Test03_FuncSimply { def main(args: Array[String]): Unit = { def func(name: String): String = { println("func调用") return name } // 1.return是可以省略的,Scala会使用函数体的最后一行代码作为返回值 def func1(name: String): Stri
2021-10-20 08:35:28 127
原创 Scala 中函数的多种参数形式及可变参数
Scala 中函数的多种参数形式及可变参数object Test03_FuncArgs { def main(args: Array[String]): Unit = { //(1)可变参数 加一个*就可以了 def sayHi(names:String*):Unit = { println(s"hi $names") } sayHi() sayHi("linhai") sayHi("linhai","jinliang") //(
2021-10-20 08:32:48 875
原创 Scala 中各种类型函数的定义
Scala 中各种类型函数的定义object Test02_FunDefine { def main(args: Array[String]): Unit = { //(1)函数1:无参,无返回值 def sayHi() = { println("hi") } sayHi() //(2)函数2:无参,有返回值 def sayHi1():String = { println("hi") "linhai" }
2021-10-20 08:30:48 214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人