★★★Scala
文章平均质量分 50
scala
维格堂406小队
人天生都是软弱的,唯其软弱而犹能承担起苦难,才显出人的尊严。
展开
-
Scala112-scala和mysql的交互
涉及到scala读、写、改mysql的一些操作,记录代码,备查。读读mysql一般有两种操作:整张表load进来通过执行sql,load部分数据进来import java.sql.{Connection, DriverManager, PreparedStatement, Timestamp}import org.apache.spark.sql.{DataFrame, SaveMode, SparkSession}def loadMysqlAsDf(sparkSession: Sp原创 2021-10-19 17:39:19 · 232 阅读 · 0 评论 -
Scala111-map、flatten、flatMap
Intro map、flatten、flatMap是scala中常用的函数,举几个例子,简单的总结下。Mapmap操作是针对集合的变换操作,它将函数应用到集合中的每个元素,并产生一个结果集合。import scala.collection.mutable.{ListBuffer, ArrayBuffer}import scala.collection.mutable.{ListBuffer, ArrayBuffer}val arr=Array(ArrayBuffer(1),ArrayBuf原创 2021-03-11 16:30:16 · 346 阅读 · 0 评论 -
Scala110-combineByKey
Intro combineByKey应用于Key-Value数据,用来计算某一个key的一些指标。直接看具体的例子,了解下使用方法~生成数据import org.apache.spark.sql.functions._import org.apache.spark.sql.{DataFrame, Row, SparkSession}import scala.collection.mutable.{ListBuffer, ArrayBuffer}import org.apache.spark.原创 2021-03-11 11:12:58 · 164 阅读 · 0 评论 -
Scala109-跨集群读取hive
实际工作中的场景,要在A集群部署任务,读取B集群hive的数据,存在A集群对应的表中。目前调研得出以下三种方式:A集群直接读取B集群的hdfs数据(两个集群环境要通),对得到的DataFrame操作,写入A集群的hive中A集群上建sparksession时,加入B集群的参数,直接spark.sql读取数据,再写入集群A的hdfs中(此时不能再写入集群A的hive了)pyspark,通过pyhive这个库读取hive数据,转换成pyspark的dataframe,再建立tempview,通过sp原创 2021-01-27 19:52:03 · 559 阅读 · 0 评论 -
Scala107-Spark.sql中计算中位数
创建数据框import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.ml.feature.VectorAssemblerimport org.apache.spark.ml.linalg.{Vector, Vectors}import org.apache.spark.sql.{DataFrame, Row, SparkSession}import org.apache.spar原创 2021-01-27 09:32:24 · 2971 阅读 · 0 评论 -
Scala106-写入hive
Intro 把经过处理之后的dataframe直接写入到hive中,有几种方式,分别举例说明。普通表spark.sql 非常常见的一种方式是,通过建立临时表,写sql的方式写入 // 1、DataFrame建临时表,通过spark.sql的方式回写进去 df11.createOrReplaceTempView("temp") spark.sql("insert into tmp.test2hive select * from temp") // 删除临时表原创 2020-12-23 14:23:14 · 2307 阅读 · 0 评论 -
Scala005-DataFrame中使用UDF
在处理spark.DataFrame时,经常会用到udf,简单做些总结和笔记。构造数据import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.ml.feature.VectorAssemblerimport org.apache.spark.ml.linalg.{Vector, Vectors}import org.apache.spark.sql.{DataFrame, Row原创 2020-09-01 14:29:03 · 1035 阅读 · 0 评论 -
Scala105-Spark.sql中collect_list用法
import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.ml.feature.VectorAssemblerimport org.apache.spark.ml.linalg.{Vector, Vectors}import org.apache.spark.sql.{DataFrame, Row, SparkSession}import org.apache.spark.sql.原创 2020-05-28 14:37:48 · 3860 阅读 · 0 评论 -
Scala104-Spark.sql的内置日期时间函数
有些时候我们会直接用df.createOrReplaceTempView(temp)创建临时表,用sql去计算。sparkSQL有些语法和hql不一样,做个笔记。<scala.version>2.11.12</scala.version><spark.version>2.4.3</spark.version>import org.apache.spark.sql.functions._import spark.implicits._import原创 2020-05-19 00:01:23 · 1331 阅读 · 0 评论 -
Scala108-Array常用方法总结
之前学习韩老师Scala课程中,做过一些笔记,见https://blog.csdn.net/wendaomudong_l2d4/article/details/104808712。部分用户没涉及到,重新做个整理,不定时Update~主要内容:增改删查排序增改删查Array本身不可以增删元素,ArrayBuffer可以,具体不赘述,之前的笔记里有涉及。查:可以用(index)的方式...原创 2020-03-24 17:45:30 · 310 阅读 · 0 评论 -
ScalaNote24-模式匹配和高阶函数练习题
书到用时方恨少,很多函数还是不熟悉啊!!!Exercise01利用模式匹配,编写一个swap函数,接受一个整数的对偶,返回对偶的两个组成部件互换位置的新对偶//对偶貌似就是元组的意思,姑且认为他是元组吧var tuple = (4,5)println(tuple.getClass)def swap(tuple:Tuple2[Int,Int])={ tuple match{ ...原创 2020-03-19 23:28:37 · 335 阅读 · 0 评论 -
ScalaNote23-递归应用
直接看递归的案例~Exercise01计算1-50的和!同时使用循环和递归,并且比较执行时间import org.joda.time.format.DateTimeFormatimport org.joda.time.{DateTime, Period,Duration}//单位:毫秒val time1 = System.currentTimeMillis()println("Sta...原创 2020-03-18 20:42:40 · 115 阅读 · 0 评论 -
ScalaNote22-函数式高级编程
偏函数先看一个需求,给你一个集合val list = List(1, 2, 3, 4, “abc”) ,请完成如下要求:将集合list中的所有数字+1,并返回一个新的集合要求忽略掉 非数字 的元素,即返回的 新的集合 形式为 (2, 3, 4, 5)用之前学过的知识,这个题有两个解法,第一个是利用filter和map函数filter筛选出Int的元素,注意此时返回的Any类型把fil...原创 2020-03-17 23:32:21 · 261 阅读 · 0 评论 -
ScalaNote21-模式匹配
match模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配,那么会执行case _ 分支。看个Demo:val oper = '#'val n1 = 20val n2 = 10var res = 0oper m...原创 2020-03-15 21:31:31 · 163 阅读 · 0 评论 -
ScalaNote20-集合练习题02
Exercise01编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0和n之间。val n = 10val arr = scala.collection.mutable.ArrayBuffer[Int]()for (i <- 1 to 10){ arr.append(scala.util.Random.nextInt(n))}println(arr)Ar...原创 2020-03-14 22:24:39 · 446 阅读 · 0 评论 -
ScalaNote19-集合练习题01
Exercise01val sentence = “AAAAAAAAAABBBBBBBBCCCCCDDDDDDD”将sentence 中各个字符,通过foldLeft存放到 一个ArrayBuffer中import scala.collection.mutable.ArrayBufferval sentence = "AAAAAAAAAABBBBBBBBCCCCCDDDDDDD"def...原创 2020-03-14 00:11:51 · 505 阅读 · 0 评论 -
ScalaNote18-集合的应用
前面介绍了各种集合和对应的增改删查的操作,本文主要介绍集合的其他操作。map映射操作 先看个实际案例:请将List(3,5,7) 中的所有元素都 * 2 ,将其结果放到一个新的集合中返回,即返回一个新的List(6,10,14)。在Python里可以直接用列表推导式完成,Scala中也可以用循环的方式完成,看一个繁琐的方法:import scala.collection.mutable...原创 2020-03-14 00:09:17 · 157 阅读 · 0 评论 -
ScalaNote17-集合之映射Map
映射Map Scala中的Map是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。Scala中,有可变Map (scala.collection.mutable.Map) 和 不可变Map(scala.collection.immutable.Map)。// 构造不可变映射val map1 = Map("Alice" ...原创 2020-03-12 14:51:22 · 182 阅读 · 0 评论 -
ScalaNote16-集合之元组、列表、队列
元组Tuple 元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组, 最多的特点灵活,对数据没有过多的约束。有点像R里的List~注意:元组中最大只能有22个元素! 看个简单的Demo:// 和python元组定义方式类似val tuple1 = (1, 2, 3, "hello", 4)println(tuple1...原创 2020-03-11 23:19:45 · 202 阅读 · 0 评论 -
ScalaNote15-集合之数组Array
Introscala集合基本介绍:Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问两个主要的包:不可变集合:scala.collection.immutable可变集合: scala.collection.mutableScala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本Sc...原创 2020-03-11 23:19:13 · 137 阅读 · 0 评论 -
ScalaNote14-隐式转换
Intro 在实际工作中,可能需要指定某些数据类型的相互转化,这时候会用到隐式转换和隐式函数。看一个Demo:class test(){ implicit def f1(d: Double): Int = { d.toInt } var x:Int=3.9}val testObj = new testtestObj.xwarning: t...原创 2020-03-09 00:06:25 · 141 阅读 · 0 评论 -
ScalaNote13-嵌套类
Intro 在Scala中,你几乎可以在任何语法结构中内嵌任何语法结构。如在类中可以再定义一个类,这样的类是嵌套类,其他语法结构也是一样。基本语法如下:class ScalaOuterClass { // 外部类 class ScalaInnerClass { //成员内部类 }}object ScalaOuterClass { //伴生对象 class ScalaStat...原创 2020-03-08 23:02:36 · 111 阅读 · 0 评论 -
ScalaNote12-特质trait
介绍特质相关内容,知识点多且杂,力有未逮~Intro 特质是为了抽样出不同类共有的部分,方便在各个类中进行调用,这似乎有点像父类和子类继承的意思,有啥不同?Scala中类继承为单一继承,也就是说子类只能有一个父类,但是一个子类可以"继承"or调用多个Trait。当一个类可以和多个Trait混合,这些Trait定义的成员变量和方法也就变成了该类的成员变量和方法。trait 的声明格式:...原创 2020-03-08 21:10:18 · 228 阅读 · 0 评论 -
Scala004-DataFrame整列String转timestamp
Intro DataFrame中有一列是String格式,字符串类型为"yyyyMMdd",需要把它转换成"timestamp"。可能有很多方法,udf啦等等,这里放一个相对简单的。构造数据import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.sql.function...原创 2020-03-04 00:19:06 · 1602 阅读 · 1 评论 -
Scala003-DataFrame实现Row_number
Intro 本来打算用spark.sql()的方式做row_number,但是貌似不支持。还好DataFrame本身是支持的~话不多说,看demo数据构造import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.sql.functions._import org.apa...原创 2020-03-04 00:18:26 · 1690 阅读 · 0 评论 -
Scala002-DataFrame筛选多个列
Intro 用scala做数据清洗,需要把两份数据union,为了防止两个dataframe的字段不一致,需要先筛选出两者共有的,此为背景。版本信息:scala:2.11.12spark:2.4.4数据构造import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark....原创 2020-03-04 00:17:26 · 1298 阅读 · 0 评论 -
ScalaNote11-面向过程练习题2
Exercise01该题是Java题,因此有静态属性、静态方法等词,反正用Scala实现即可在Frock类中声明私有的静态属性currentNum,初始值为100000,作为衣服出厂的序列号起始值声明公有的静态方法getNextNum,作为生成上衣唯一序列号的方法。每调用一次,将currentNum增加100,并作为返回值在TestFrock类的main方法中,分两次调用getNextN...原创 2020-02-27 08:12:00 · 1276 阅读 · 0 评论 -
ScalaNote10-单例对象、伴生对象、伴生类
还是老样子,对java不是很熟悉,所以有些概念不是很理解。还是应用为主,初步了解用法,后面有机会再Update。单例对象 在idea中,经常会新建一个object,在里面定义N多个函数,最后用main函数执行。那这个object是干嘛的?先定义个object瞅瞅:object objDemo{ var name = "jack" def printName(){ ...原创 2020-02-27 08:06:36 · 277 阅读 · 0 评论 -
ScalaNote09-面向过程练习题
Exercise1编写Computer类,包含CPU、内存、硬盘等属性,getDetails方法用于返回Computer的详细信息编写PC子类,继承Computer类,添加特有属性【品牌brand】编写NotePad子类,继承Computer类,添加特有属性【颜色color】编写Test Object,在main方法中创建PC和NotePad对象,分别对象中特有的属性赋值,以及从Compu...原创 2020-02-23 21:05:15 · 1806 阅读 · 1 评论 -
ScalaNote08-抽样、封装、继承
抽象 在定义一个类时,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板),这种研究问题的方法称为抽象。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNOsAV2c-1582451454810)(…/Picture/pic03.jpg)]比如上面的例子,我们定义个Account类,它有共有的属性:账号、余额、密码,不同账号都可以有以下的...原创 2020-02-23 17:51:07 · 215 阅读 · 0 评论 -
ScalaNote07-类的练习题
整几道练习题做做~Exercises 1 编写一个Time类,加入只读属性hours和minutes,和一个检查某一时刻是否早于另一时刻的方法before(other:Time):Boolean。Time对象应该以new Time(hrs,min)方式构建。class Time(inHour:Int,inMinutes:Int){ // 主构造器进行值的初始化 // 定义两个属...原创 2020-02-22 23:32:22 · 271 阅读 · 0 评论 -
ScalaNote06-包相关
包基础概念 现在有两个程序员共同开发一个项目,程序员小明希望定义一个类取名 Dog ,程序员小红也想定义一个类也叫Dog,我们知道同一个脚本里类名不可以一样。这时可以使用包进行区分,并且控制访问范围。一般大家会用IDEA开发scala代码,此时可以通过子包的方式,分别存放Dog类的文件。调用时,带上路径即可,比如:val dog1 = new scala.xiaoming.Dogval d...原创 2020-02-22 22:52:09 · 162 阅读 · 0 评论 -
ScalaNote05-类、属性、方法
类通俗定义 **看一个实际案例:**张老太养了只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年10岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示 张老太没有这只猫猫。类:管理多个不同类型的数据-[属性](如猫名字、年龄、颜色)对属性进行操作-[方法](如猫可以run、cry等等) 类是抽象的,概念的,...原创 2020-02-21 20:05:28 · 274 阅读 · 0 评论 -
ScalaNote04-函数式编程
函数函数定义 为完成某一功能的程序指令(语句)的集合,称为函数。在scala中函数的基本语法如下:def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] { 语句... return 返回值}函数声明关键字为def (definition)[参数名: 参数类型], …:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔函数中的...原创 2020-02-20 10:45:22 · 123 阅读 · 0 评论 -
ScalaNote03-程序流程控制
Intro 介绍分支控制和循环相关内容。分支控制if-else单分支if(条件表达式){执行代码块}if-else的单分支可以赋值给变量var x= 10var s =if(x>0) 1 else -1println(s"s=${s}")s=1x: Int = 10s: Int = 1如果混合类型表达式,返回的结果类型为Anyvar x= 10...原创 2020-02-18 20:33:34 · 110 阅读 · 0 评论 -
ScalaNote02-变量
变量变量概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。变量声明 scala要求变量使用前先声明和定义,并且初始化值。声明的语法:var|val 变量名[:变量类型] = 变量值 其中var修饰的变量可以改变,val修饰的变量不可以改变。声明变量时,类型也可以省略,编译器可以做类型推...原创 2020-02-18 20:32:55 · 324 阅读 · 0 评论 -
ScalaNote01-Scala基础
通过尚硅谷-韩顺平老师的Scala视频课和《快学Scala》、《Scala编程》两本书学习Scala,做些笔记巩固理解。Scala诞生 Scala是Scalable Language的简写,是一门多范式的编程语言。由马丁·奥德斯基(Martin Odersky)发明,Spark的兴起,带动了Scala语言的发展。Scala和Java、JVM 之前也没有学过Java,算是java小白...原创 2020-01-10 20:53:37 · 188 阅读 · 0 评论 -
Scala103-日期处理
Intro 介绍常用的日期处理方法。时间获取import org.joda.time.format.DateTimeFormatimport org.joda.time.{DateTime, Period,Duration}Intitializing Scala interpreter ...Spark Web UI available at http://DESKTOP-L...原创 2020-01-04 09:26:02 · 397 阅读 · 0 评论 -
Scala102-操作Hdfs
Info 先生成DataFrame,再把数据储存在HDFS上。import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.ml.feature.VectorAssemblerimport org.apache.spark.ml.linalg.{Vector, Vectors...原创 2020-01-02 16:12:41 · 380 阅读 · 0 评论 -
Scala001-split向量列
Intro 分类模型,预测训练集之后probability列是vector格式,第一个元素存放label=0的概率,第二个元素存放label=1的概率构造一个这样的数据,并且进行解析初始数据构造import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.ml.featur...原创 2019-12-11 21:13:49 · 273 阅读 · 0 评论