![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scala
闻香识代码
这个作者很懒,什么都没留下…
展开
-
Maven 常见企业配置踩坑点
Maven 常见企业配置踩坑点踩坑点一般企业开发,要么一个大工程,如果进行拆分,就会使用父子工程,或直接拆分为多个独立工程父子工程父工程中pom文件子工程中pom文件注意,父子工程,子工程自动集成父工程的依赖项父工程中的依赖管理(针对父工程和所有子工程)dependencyManagement<!-- 依赖的全局版本管理 --> <dependencyManagement> <dependencies>原创 2020-10-12 21:58:48 · 82 阅读 · 0 评论 -
GeoHash编码原理和代码演示
GeoHash编码原理和代码演示1. 背景1.1 概述在大数据领域中,时常需要进行海量数据的映射检索,其中GPS转换为地理位置以及IP地址转换为地理位置就是一种很常见需求。由于数据量很大,如何进行快速查询就需要使用到各种算法。在大数据领域,常见的快速匹配如布隆过滤器,bitmap算法,hyperloglog算法这些是位图算法。今天要说的geohash算法,则是二分法结合编码的一种地理位置信息算法。1.2 原理经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为原创 2020-10-12 21:06:04 · 939 阅读 · 0 评论 -
Spark SQL的自定义函数UDF
Spark SQL的自定义函数UDF1. 背景在SQL使用时,会有内置函数,但如果业务比较复杂,但又希望可以有更加灵活的函数使用和复用,则需要自定义UDF,就是user defined function,可以分为UDTF、UDAFUDTF,user defined table-generating function,就是将数据打散UDAF,user defined aggregating function,就是将数据聚合。2. 创建和使用UDF下述会使用案例来展示如何使用自定义函数2.1原创 2020-10-06 23:32:45 · 3573 阅读 · 0 评论 -
Spark SQL中Sparksession中的implicits探秘
Spark SQL中Sparksession中的implicits对象1. 背景在Spark SQL中,经常会需要如下代码import sparkSession.implicits._这是为了引入对象实例中的隐式转换2. 探秘源码SQLImplicits从上述源码可以看出,dataframe其实就是dataset的特殊形式...原创 2020-10-06 20:49:15 · 3792 阅读 · 0 评论 -
Spark SQL 中org.apache.spark.sql.functions归纳
Spark SQL 中org.apache.spark.sql.functions归纳注意,这里使用的是scala 2.12.12,spark版本是最新的3.0.1版本1. Sort functions/** * Returns a sort expression based on ascending order of the column. * {{{ * df.sort(asc("dept"), desc("age")) * }}} * * @group s原创 2020-10-06 20:42:22 · 2401 阅读 · 0 评论 -
Spark SQL案例(二)流量累加
Spark SQL案例(二)流量累加1. 背景本身Spark SQL支持2种风格的API,sql和dsl,各有优势,实际企业开发时,看情况选择。本文种案例是基于企业开发中常见场景抽象出来的案例,数据按照一定规则,将某些字段数据进行聚合,如流量分段累计等常见场景2. 案例需求,计算连续3天及以上登录用户数据1,2020-02-18 14:20:30,2020-02-18 14:46:30,20 1,2020-02-18 14:47:20,2020-02-18 15:20:30,30原创 2020-10-05 17:35:48 · 208 阅读 · 0 评论 -
Spark SQL案例(一)连续登录
Spark SQL案例(一)连续登录1. 背景本身Spark SQL支持2种风格的API,sql和dsl,各有优势,实际企业开发时,看情况选择。本文种案例是基于企业开发中常见场景抽象出来的案例,连续登录,连续打开等常见场景2. 案例需求,计算连续3天及以上登录用户数据guid01,2018-02-28guid01,2018-03-01guid01,2018-03-05guid01,2018-03-02guid01,2018-03-04guid01,2018-03-06gui原创 2020-10-05 17:30:52 · 330 阅读 · 0 评论 -
Spark SQL之dataframe数据保存
Spark SQL之dataframe数据保存1. 背景Spark SQL作为处理结构化数据的功能模块,本身支持SQL形式使用功能,内部也做了相对RDD更加高的抽象DataFrame也是一个抽象数据集合,但对比RDD多了schema数据结构化信息,可以将DataFrame看成是RDD+schema信息2. dataframe数据保存类型环境准备Idea2020jdk 1.8scala 2.12.12maven 3.6.3pom文件<!-- 定义了一些常量 -->原创 2020-10-05 17:07:52 · 2516 阅读 · 0 评论 -
Spark SQL之创建dataFrame的多种方法
Spark SQL之创建dataFrame的多种方法1.Spark SQL是什么官网http://spark.apache.org/sql/Spark SQL顾名思义,就是通过SQL来使用Spark强大的数据分析能力,而不用去写代码。类似一Hive,可以将框架的使用门槛极大降低。因为SQL是很多人都会使用的,而编写代码门槛相对高得多。2. dataFrame是什么官网介绍和RDD类似,dataFrame也是一个分布式抽象数据容器。并不存储数据,但会存储数据来源,数据操作以及数据结构化信原创 2020-10-05 16:56:09 · 860 阅读 · 0 评论 -
Spark RDD经典基础面试题
Spark RDD经典基础面试题面试基础题SparkContext哪一端创建的的?Driver端DAG是在哪一端被构建的?Driver端RDD是在哪一端生成的?Driver端调用RDD的算子(Transformation和Action)是在哪一端调用的Driver端RDD在调用Transformation和Action时需要传入函数,函数是在哪一端声明【定义】和传入的?Driver端RDD在调用Transformation和Action时需要传入函数,请问传入的函数是在哪一端执行了原创 2020-09-30 16:24:00 · 589 阅读 · 0 评论 -
Spark总结之RDD(七)
Spark总结之RDD(七)1. 背景Spark作为大数据分布式处理引擎,在设计思想上很大参考了mapreduce的设计思想,但在编程便利性上做了更高层级的抽象,屏蔽了很多分布式计算的细节。具体体现在编程接口的抽象设计上,如RDD、dataSet、dataFrame、DStream等Spark本身分为SaprkCore,包含RDD、Accumulators、broadCast,以及内部运行机制,在此之上,有更高层级的抽象,如Spark SQL、Spark Streaming、MLib、Graphx等原创 2020-09-30 16:13:09 · 143 阅读 · 0 评论 -
Spark RDD案例(六)自定义排序
Spark RDD案例(六)自定义排序1. 背景在大数据日常开发中,数据提取,转换,存储等工作是日常主要内容spark作为大数据处理分析引擎,底层主要是RDD抽象数据集,更上层的spark sql、dataset、dataframe、dstream等都是基于RDD来抽象的。本文主要讲述关于数据提取中最常见的数据排序处理,使用RDD来实现。最主要的是自定义排序,这也是日常开发中最常见的排序需求,一般都需要自定义排序规则2.案例代码需求将数据按照年龄降序,工资升序数据代码中手原创 2020-09-29 19:56:42 · 767 阅读 · 0 评论 -
Spark总结之RDD(六)
Spark总结之RDD(六)1. 背景Spark作为大数据分布式处理引擎,在设计思想上很大参考了mapreduce的设计思想,但在编程便利性上做了更高层级的抽象,屏蔽了很多分布式计算的细节。具体体现在编程接口的抽象设计上,如RDD、dataSet、dataFrame、DStream等Spark本身分为SaprkCore,包含RDD、Accumulators、broadCast,以及内部运行机制,在此之上,有更高层级的抽象,如Spark SQL、Spark Streaming、MLib、Graphx等原创 2020-09-29 15:35:22 · 684 阅读 · 0 评论 -
Spark RDD案例(五)经纬度转换为地理位置
Spark RDD案例(五)经纬度转换为地理位置1. 背景Spark作为大数据分析引擎,本身可以做离线和准实时数据处理Spark抽象出的操作对象如RDD、dataSet、dataFrame、DStream等都是高层级的抽象,屏蔽了分布式数据处理代码细节,操作分布式数据和处理就像使用scala集合接口一样便利。这样可以很大降低编程使用和理解门槛。在实际生产中,大数据处理面临的业务需求和正常java 业务需求一样,都是基于数据做处理。不同的是正常java业务数据相对较少,如mysql中适合存储的数据是原创 2020-09-28 22:27:07 · 1287 阅读 · 1 评论 -
Spark RDD案例(四)IP和地理位置映射统计
Spark RDD案例(四)IP和地理位置映射统计1. 背景Spark作为大数据分析引擎,本身可以做离线和准实时数据处理Spark抽象出的操作对象如RDD、dataSet、dataFrame、DStream等都是高层级的抽象,屏蔽了分布式数据处理代码细节,操作分布式数据和处理就像使用scala集合接口一样便利。这样可以很大降低编程使用和理解门槛。在实际生产中,大数据处理面临的业务需求和正常java 业务需求一样,都是基于数据做处理。不同的是正常java业务数据相对较少,如mysql中适合存储的数据原创 2020-09-28 21:10:50 · 1372 阅读 · 0 评论 -
Spark RDD案例(三)连续分布数据按照条件rollup
Spark RDD案例(一)连续分布数据按照条件rollup1. 背景Spark作为大数据分析引擎,本身可以做离线和准实时数据处理Spark抽象出的操作对象如RDD、dataSet、dataFrame、DStream等都是高层级的抽象,屏蔽了分布式数据处理代码细节,操作分布式数据和处理就像使用scala集合接口一样便利。这样可以很大降低编程使用和理解门槛。在实际生产中,大数据处理面临的业务需求和正常java 业务需求一样,都是基于数据做处理。不同的是正常java业务数据相对较少,如mysql中适合原创 2020-09-26 18:00:44 · 412 阅读 · 0 评论 -
Spark RDD案例(二)连续数据统计
Spark RDD案例(一)连续数据统计1. 背景Spark作为大数据分析引擎,本身可以做离线和准实时数据处理Spark抽象出的操作对象如RDD、dataSet、dataFrame、DStream等都是高层级的抽象,屏蔽了分布式数据处理代码细节,操作分布式数据和处理就像使用scala集合接口一样便利。这样可以很大降低编程使用和理解门槛。在实际生产中,大数据处理面临的业务需求和正常java 业务需求一样,都是基于数据做处理。不同的是正常java业务数据相对较少,如mysql中适合存储的数据是小而美的原创 2020-09-26 15:24:11 · 1017 阅读 · 0 评论 -
Spark RDD案例(一)分组TopN
Spark RDD案例(一)分组TopN1. 背景作为分布式数据处理引擎,Spark抽象出了很多算子,使得编程对比mapreduce更加遍历,实现需求时,也可以更加灵活,但也更容易出错。本文是大数据常见场景分组TopN的简化案例,实际企业生产中也会相对频繁遇到类似需求2. 案例需求以下数据是类似网站日志的记录,需要求出每个科目老师访问次数最多的那2个。数据http://bigdata.doit.cn/laozhanghttp://bigdata.doit.cn/laozhangh原创 2020-09-25 21:36:34 · 1189 阅读 · 0 评论 -
Spark总结之RDD(五)
Spark总结之RDD(五)1. 背景Spark作为分布式处理引擎,针对数据分布式处理做了很多抽象,这样在API使用上,可以屏蔽更多代码细节,使得编程更加遍历Spark抽象出的有RDD、dataSet、dataFrame、DStream等RDD从行为上可以划分transformation、action、既不是transformation也不是action三大种类型RDD从api接口设计上,可以分为底层RDD,高层级RDD,高层级RDD一般是使用底层的RDD来实现,稍后源码简洁会做展示。RDD只原创 2020-09-24 20:18:44 · 403 阅读 · 0 评论 -
Spark总结之RDD(三)
Spark总结之RDD(三)1. 背景Spark作为一个分布式数据处理引擎,针对数据处理做了高层级的抽象,如RDD、dataSet、dataFrame、DStream。本文关于RDD的总结,会从使用,源码等角度进行对比和分析。一定一定注意,RDD只是一个抽象数据集合,本身不存储数据,只是记录要处理的数据来源,要做的数据处理逻辑等信息。时刻注意,RDD中的代码执行到底是在driver端执行还是在executor上执行。一定需要区分清楚,因为在driver端执行,就意味着需要加载到内存中处理,而内存原创 2020-09-23 12:16:03 · 233 阅读 · 0 评论 -
Spark总结之RDD(四)
Spark总结之RDD(四)1. 背景Spark针对RDD的整体设计思想很多地方和MapReduce相似,但又做了很多优化.Spark整体API设计针对分布式数据处理做了很多优化,并且做了更高层级的抽象,API使用更加简单便捷.例如RDD\DataSet\DataFrame\DStream等本文主要关于RDD的介绍,RDD类型较多,大的分类是Transformation和Action类型,但具体的RDD中又可以进一步细分为基础的RDD和在基础RDD之上的高级RDD(内部调用基础RDD以及各种操作)原创 2020-09-21 23:18:52 · 812 阅读 · 0 评论 -
Spark 总结之RDD(二)
Spark 总结之RDD(二)1. 背景Spark作为分布式数据处理引擎,在企业实践中大量应用.对比Mapreduce既有性能上的优势,也有开发编程上的便捷性优势.Spark针对数据处理,对编程接口做了更高层级的抽象和封装,API使用起来更加方便.其中RDD DataSet DataFrame DStream等都是抽象出来的数据处理对象.RDD使用时会屏蔽掉具体细节,操作起来就跟操作Scala的集合对象一样便捷.2. RDD常见算子和方法2.1 RDD创建 查看方法RDD创建原创 2020-09-20 22:34:46 · 303 阅读 · 0 评论 -
Scala高级语法总结(三)柯里化
Scala高级语法总结(三)柯里化1. 柯里化是什么上述是百度对柯里化的定义和介绍,可以看出,柯里化主要是为了一个多参数函数拆分为多个单函数参数的技术。2. scala中的柯里化代码package com.doit.curyingobject Curying { def main(args: Array[String]): Unit = { val i: Int = m(1, 2) println(i) val i1: Int = m2(2)(3)原创 2020-09-18 22:31:12 · 287 阅读 · 0 评论 -
Spark RDD算子案例----数据检索并保存到mysql
Spark RDD算子案例----数据检索并保存到mysql1. 背景在Spark大数据分析处理引擎中,针对数据处理,抽象出了很多基于分布式的算子。对这些算子做操作就跟对本地的集合做操作一样便利。Spark中算子类型有RDD、dataset、dataframe、dstream等。本文演示案例主要是针对RDD的操作。本文案例主要是最简化的企业开发思路,读取结构化数据,使用spark处理,结果保存到mysql数据库中。(实际企业生产还会有一个OLAP过程,OLAP引擎会从结果数据库中检索数据并展示出来原创 2020-09-18 20:50:42 · 611 阅读 · 0 评论 -
Spark初探案例WordCount之Scala版本
Spark初探案例WordCount之Scala版本1. 背景2. 本地模式运行代码3. 集群standalone运行模式原创 2020-09-17 21:15:58 · 276 阅读 · 0 评论 -
Spark Shell客户端总结
Spark Shell客户端总结1. 背景作为服务器端运行软件,很多都会提供多种访问和操作方式。如mysql、hdfs、hbase、hive、clickhouse等等。都会提供api、shell客户端,web网页端、部分甚至还会有ui图形化工具。多种多样的访问和操作方式,都是为了方便调试和查看这些服务器端运行软件的,一个好的服务器软件一定是要容易上手的,这时候shell客户端就很重要,可以通过输入交互性命令来快速学习和验证软件的各个功能。spark也不例外,提供了shell客户端来做交互式的数据操原创 2020-09-16 23:25:14 · 921 阅读 · 0 评论 -
Spark笔记之简介
Scala笔记之Spark简介1. 背景作为目前大数据处理领域主流处理引擎的spark,从2016年开始在国内快速进入企业生产实践,到现在2020年已经有四年。版本也更新到了现在的3.0.1。实际企业使用为了稳定性,旧的项目一般都还在2.x版本,特别是2.4.x版本。http://spark.apache.org/下载https://archive.apache.org/dist/spark/2. Spark简介2.1 Spark是什么2.2...原创 2020-09-16 21:14:15 · 190 阅读 · 0 评论 -
Maven 打包忽略依赖<scope></scope>
Maven 打包忽略依赖jar包之1. 背景作为事实上主流的jar包管理工具,有时候需要考虑工程打包是否包含所依赖jar包,这样可以缩减打出来的bar大小实际maven打包,如果在pom文件中配置了打包插件,就会打出2个jar包,一个是包含依赖的jar包,一个是不包含依赖的jar包。不包含依赖的jar包,体积会小很多,只包含编写的逻辑代码,但要求这个jar包运行环境中必须有这些依赖jar包。包含依赖的jar包,只要有jre 运行环境,就可以运行,因为已经把所依赖的jar包都打进去了,对外部没有依原创 2020-09-16 20:03:45 · 5855 阅读 · 0 评论 -
Maven依赖冲突解决之exclusions
Maven依赖冲突解决之exclusions1. 背景作为java生态下开发者,往往需要使用大量线程的第三方库,一般都是以jar包形式存在。maven作为事实上主流的jar包依赖管理工具,Idea和Eclipse都支持创建maven工程来管理jar包依赖。使用maven进行jar包依赖管理时,maven会自行管理jar包及其依赖链条,但往往会遇到依赖冲突问题,这时候就可以尝试使用exclusion来进行依赖管理。2. 解决方式场景假如hadoop集群中hadoop版本是3.2.1,这原创 2020-09-16 19:45:34 · 8125 阅读 · 0 评论 -
Scala高级语法总结(二)匹配模式match case
Scala高级语法总结(二)匹配模式match case1. 背景scala作为一门对比java更高级的语言,彻底地贯彻面向对象(函数、代码块都是对象,不再有基本类型,静态和非静态代码分别管理等等),支持函数式编程(函数作为一等公民,可以作为参数或者返回值)scala将java中地switch case功能进一步放大,不过叫做match case。可以匹配地类型更多。同样地,scala地match case也需要处理default 情况,而且是必须显式指定。因为match case中传入地类型允许原创 2020-09-15 12:15:11 · 949 阅读 · 0 评论 -
Scala高级语法总结(一)高阶函数和偏函数
Scala高级语法总结(一)高阶函数和偏函数1. 背景编程语言本身是人书写,计算机执行。在这个过程中随着业务和技术发展,逐渐出现2个分支。一个是追求性能,一个是追求开发便利性。如C、C++追求性能,python,java则是追求开发便利性。scala,swift等相对现代化语言,主要追求开发便利性。所以程序员书写起来会很舒服,因为提供了很多以往需要使用设计模式才能实现的功能,现在直接使用即可。scala支持函数式编程,也就是可以将函数作为参数或者返回值。这样代码的最小粒度就降低到了方法级别,而ja原创 2020-09-15 10:58:20 · 222 阅读 · 0 评论 -
Scala 面向对象知识归纳
Scala 面向对象知识归纳1. 类和对象详解1.1 组成结构构造函数成员变量成员方法(函数)局部变量代码块1.2 构造器构造器的定义每个类都有一个主构造器,这个构造器和类定义"交织"在一起类名后面的内容就是主构造器,如果参数列表为空的话,()可以省略scala的类有且仅有一个主构造器,要想提供更加丰富的构造器,就需要使用辅助构造器,辅助构造器是可选的,它们叫做this其实这一点和java的设计是一样的,只不过java会默认调用父类构造器,scala是所有构造方法最后都需原创 2020-09-10 22:42:59 · 151 阅读 · 0 评论 -
Scala之集合归纳
Scala之集合归纳1. 背景2. 序列3. Set4. 元组5. Map6. Option7.常见集合方法原创 2020-09-08 21:53:38 · 493 阅读 · 0 评论 -
Scala之IO流归纳
Scala之IO流归纳1. 背景在所有编程语言中,语言设计基本会考虑以下几个大的板块数据类型流程控制运算符注释方法和函数定义权限控制集合IO流网络编程多线程本文就会简单讲解以下scala中的IO流,因为本身使用scala不会过多使用IO流,所以就简单演示一种IO流2. IO流之Source2.1 概述不管是哪种编程语言,如果要有相对完善的设计,基本都会把IO流考虑进去,这样基于编程语言的框架等才能有相对好的发挥空间–可以直接访问和操作系统文件I原创 2020-09-07 23:37:12 · 494 阅读 · 0 评论 -
Scala 之方法和函数总结
Scala 之方法和函数总结1.背景scala作为一门编程语言,语言设计就贯穿2个思想,面向对象和支持函数式编程在所有编程语言中,如何对代码进行不同粒度的管理都是一个值得深入思考的问题。java中的代码管理,从项目、包、类、方法逐级细化。由于方法无法脱离对象存在,所以实际上java代码最小粒度是对象级别scala中的代码管理,相比java更细化,因为支持函数式编程。项目、包、类(内部含方法)、函数。scala在语言设计时,为了能够更好利用现有java和JavaScript广大生态体系下的第三方原创 2020-09-07 22:55:53 · 220 阅读 · 0 评论 -
Scala 语法总结之流程控制(if、for、while、代码块)
Scala 语法总结之流程控制(if、for、while、代码块)1. 背景scala是一门编程语言,语法特性设计贯穿了2个思想,面向对象和函数式编程特性支持在scala中,代码块也是一个对象,最小的代码单位对比java,scala中最小代码单位是函数,而java则是对象。所以scala可以有更加灵活的代码组织方式在所有编程语言设计中,基本会包含的几个大块都是一样数据类型流程控制运算符注释方法和函数定义权限控制集合IO流网络编程多线程2. if else单层if原创 2020-09-07 21:27:11 · 154 阅读 · 0 评论 -
Scala语法之常量变量和运算符
Scala语法之常量变量和运算符1. 背景官网:https://www.scala-lang.org/scala是什么上述截图可知,scala是一门编程语言。静态语言需要编译才能运行,强类型语言。scala特点同时具备面向对象,函数式编程的特点,并且可以运行在jvm和js运行时上,也就是说可以访问获取海量的java和js生态中的大量第三方库。scala如何学习官方文档https://scala-lang.org/files/archive/api/教学视频(B站搜索sc原创 2020-09-07 20:38:52 · 718 阅读 · 0 评论 -
Scala安装教程(windows和linux)
Scala安装教程1. 背景作为一门编程语言,scala本身和java有很深渊源,而且基于java做了更多扩展,并且scala一些语法特性是作为很多现代化编程语言的参考目标。如函数式编程、完全的面向对象语法设计等等官网 https://www.scala-lang.org/scala最新版本,2.13.0本文将使用的版本2.12.12https://www.scala-lang.org/download/2.12.12.html2. windows安装步骤下载win原创 2020-09-04 20:57:24 · 5916 阅读 · 1 评论