Spark
spark
大数据流浪法师
个人兴趣领域:大数据、人工智能、游戏Fix技术
展开
-
还不知道SparkSQL中left semi join操作与left join操作的区别?进来一看便知!
leftJoin类似于SQL中的左外关联left outer join,返回结果以第一个RDD为主,关联不上的记录为空。部分场景下可以使用left semi join替代left join:因为 left semi join 是 in(keySet) 的关系,遇到右表重复记录,左表会跳过,性能更高,而 left join 则会一直遍历。但是left semi join 中最后 select 的结果中只许出现左表中的列名,因为右表只有 join key 参与关联计算了。...原创 2020-06-09 07:59:39 · 3584 阅读 · 0 评论 -
Spark Driver相关总结
Spark Driver相关总结Driver的作用:执行main方法把用户程序转化为task协调任务的调度Driver相关总结driver划分的task由executor执行一个spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext实例,是程序的入口功能向集群申请资源负责作业的调度和解析生成Stage并调度Task到Executor上(包括DAGScheduler,TaskScheduler)...原创 2020-05-28 08:43:10 · 349 阅读 · 0 评论 -
Spark Shuffle相关总结
Shuffle产生Stage这里以shuffle为界限划分两个stagestage依据shuffle划分,reduce算子产生shuffle常见shuffle算子distinctgroupByKeyreduceByKeyaggregateByKeyjoincogrouprepartition原创 2020-05-28 08:31:48 · 212 阅读 · 0 评论 -
SparkSQL中 RDD、DataFrame、DataSet三者的区别与联系
RDDRDD:弹性分布式数据集;不可变、可分区、元素可以并行计算的集合。优点:RDD编译时类型安全:编译时能检查出类型错误;面向对象的编程风格:直接通过类名点的方式操作数据。缺点:序列化和反序列化的性能开销很大,大量的网络传输;构建对象占用了大量的heap堆内存,导致频繁的GC(程序进行GC时,所有任务都是暂停)DataFrameDataFrame以RDD为基础的分布式数据集。优点:DataFrame带有元数据schema,每一列都带有名称和类型。DataFrame引入了off-he转载 2020-05-26 09:32:19 · 1621 阅读 · 0 评论 -
Spark的两种核心shuffle是什么?
spark的Shuffle有Hash Shuffle和Sort Shuffle两种。在Spark 1.2以前,默认的shuffle计算引擎是HashShuffleManager。 HashShuffleManager有着一个非常严重的弊端,就是会产生大量的中间磁盘文件,进而由大量的磁盘IO操作影响了性能。因此在Spark 1.2以后的版本中,默认的ShuffleManager改成了SortShuffleManager。 SortShuffleManager相较于HashShuffleManager转载 2020-05-26 09:29:02 · 1216 阅读 · 0 评论 -
Spark 常见的transformation算子和action算子有哪些?
Spark 常见的transformation算子和action算子有哪些?transformation算子mapflatMapfiltergroupByKeyreduceByKeysortByKeyaction算子reducecollectfirsttakeaggregatecountByKeyforeachsaveAsTextFile转载 2020-05-26 09:23:02 · 1302 阅读 · 0 评论 -
Spark on yarn的job提交流程是怎样的?
YARN Client模式在YARN Client模式下,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存。ResourceManag转载 2020-05-26 09:19:05 · 470 阅读 · 0 评论 -
Spark提交Job核心参数有哪些?
Spark提交Job核心参数有哪些?executor-cores —— 每个executor使用的内核数,默认为1,官方建议2-5个,企业是4个num-executors —— 启动executors的数量,默认为2executor-memory —— executor内存大小,默认1Gdriver-cores —— driver使用内核数,默认为1driver-memory —— driver内存大小,默认512M例如:spark-submit \ --master local[5]转载 2020-05-25 22:08:20 · 332 阅读 · 0 评论 -
Spark有几种部署方式?
Spark支持3种集群管理器(Cluster Manager)Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括yarn;Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如map reduce、storm等,根据driver在集群中的位置不同,分为yar转载 2020-05-25 21:51:53 · 1562 阅读 · 0 评论 -
StructStreaming 流直接保存结果到JSON文件
原理将要保存的数据转为json格式,再保存。这里我第一次接触StructSteaming输出JSON格式的文件,所以就用了foreachWriter,自定义了一个JSONSink,方便代码复用。这种方法会重复的开关流,不推荐使用,仅供参考,如果能解决重复开关流的问题,就好了!。代码package demo05import java.io.FileWriterimport com...原创 2020-04-20 08:11:38 · 482 阅读 · 0 评论 -
SparkSQL 优雅地读取CSV文件[示例]
第一种:Spark2.0之前通过外部包的形式第一步:导入依赖<dependency> <groupId>com.databricks</groupId> <artifactId>spark-csv_2.10</artifactId> <version>1.4.0</version></depend...原创 2020-04-20 07:55:08 · 990 阅读 · 1 评论 -
Apache SparkSQL Spark-On-Hive
Spark-On-Hive官网http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.htmlConfiguration of Hive is done by placing your hive-site.xml, core-site.xml (for security configuration), and hdfs...原创 2020-04-10 00:49:27 · 152 阅读 · 0 评论 -
Apache SparkSQL 开窗函数与排序开窗函数
文章目录SparkSQL 开窗函数聚合函数和开窗函数开窗函数分类聚合开窗函数SparkSQL 排序开窗函数ROW_NUMBER顺序排序RANK跳跃排序DENSE_RANK连续排序NTILE分组排名SparkSQL 开窗函数https://www.cnblogs.com/qiuting/p/7880500.html开窗函数的引入是为了既显示聚集前的数据,又显示聚集后的数据。即在每一行的最后一...原创 2020-04-10 00:41:15 · 698 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI 自定义函数
SparkSQL 自定义函数自定义函数分类类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能。spark中的自定义函数有如下3类1.UDF(User-Defined-Function)输入一行,输出一行2.UDAF(User-Defined Aggregation Funcation)输入多行,输出一行3.UDTF(User-Defined Table...转载 2020-04-10 00:20:49 · 166 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI 多数据源交互
准备数据person.txt内容1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40写数据package demo12import java.util.Propertiesimport org.apache.spark.SparkContextimport org.apache.spark....转载 2020-04-10 00:03:09 · 207 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI WordCount示例
准备数据words.txt内容:hello me you her hello you herhello her helloDSL风格 代码示例package demo12import org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}obje...转载 2020-04-09 23:45:39 · 178 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI StructType指定Schema
准备数据person.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40StructType指定Schema示例代码:package demo12import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDD...转载 2020-04-09 23:16:08 · 381 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI 指定列名添加Schema
准备数据person.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40指定列名添加Schema代码示例:package demo12import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimpor...转载 2020-04-09 21:17:05 · 774 阅读 · 0 评论 -
Apache SparkSQL 两种查询风格:DSL与SQL
SparkSQL两种查询风格DSL与SQL准备数据person.txt文件内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40读取文件并转换为DataFrame或DataSetval lineRDD= sc.textFile("hdfs://hadoop01:8020/person.txt")...转载 2020-04-09 20:43:08 · 1276 阅读 · 0 评论 -
Apache SparkSQL DataSet
DataSet1.通过spark.createDataset创建Datasetperson.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40val fileRdd = sc.textFile("hdfs://hadoop01:8020/person.txt") val ds1 = s...转载 2020-04-09 20:09:16 · 154 阅读 · 0 评论 -
Apache SparkSQL DataFrame 读取parquet文件
DataFrame 读取parquet文件1.数据文件使用spark安装包下的parquet文件more /export/servers/spark/examples/src/main/resources/users.parquet2.在spark shell执行下面命令,读取数据val parquetDF=spark.read.parquet("file:///export/ser...转载 2020-04-09 19:41:39 · 350 阅读 · 0 评论 -
Apache SparkSQL DataFrame 读取json文件
DataFrame 读取json文件1.数据文件使用spark安装包下的json文件more /export/servers/spark/examples/src/main/resources/people.json文件内容:{"name":"Michael"}{"name":"Andy", "age":30}{"name":"Justin", "age":19}2.在spa...转载 2020-04-09 19:37:14 · 410 阅读 · 0 评论 -
Apache SparkSQL DataFrame 读取文本文件
DataFrame 读取文本文件1.在本地创建一个文件,有id、name、age三列,用空格分隔,然后上传到hdfs上vim person.txt1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40上传数据文件到HDFS上:hadoop fs -put person.txt /2.在spar...转载 2020-04-09 18:11:18 · 934 阅读 · 1 评论 -
Apache SparkSQL 数据抽象
Spark SQL数据抽象DataFrameDataFrame是一种以RDD为基础的带有Schema元信息的分布式数据集类似于传统数据库的二维表格 。DataSetDataSet是保存了更多的描述信息,类型信息的分布式数据集。与RDD相比,保存了更多的描述信息,概念上等同于关系型数据库中的二维表。与DataFrame相比,保存了类型信息,是强类型的,提供了编译时类型检查,调用Da...转载 2020-04-09 17:05:09 · 258 阅读 · 0 评论 -
Apache SparkSQL 概念
Spark SQL概念http://spark.apache.org/sql/Spark SQL是Spark用来处理结构化数据的一个模块。Spark SQL还提供了多种使用方式,包括DataFrames API和Datasets API。但无论是哪种API或者是编程语言,它们都是基于同样的执行引擎,因此你可以在不同的API之间随意切换,它们各有各的特点。Spark SQL 的特点1.易...原创 2020-04-09 16:58:23 · 195 阅读 · 0 评论 -
Apache SparkSQL 用JDBC方式查询MySQL数据库示例
package demo11import org.apache.spark.rdd.RDDimport org.apache.spark.sql.{Row, SparkSession}object Test02 { def main(args: Array[String]): Unit = { val sparkSession = SparkSession.builder()...原创 2020-04-09 08:19:01 · 546 阅读 · 0 评论 -
Apache SparkStreaming 整合kafka
> 大家好,我是练习时长两年半的大数据练习生,喜欢数学,AI,大数据。> 写博客是为了`总结,分享,自娱自乐`。希望写出的东西会`对自己,对别人都有价值!`> ==废话不多说,现在是个终身学习的时代,开始学习了!奥力给!干了兄弟们!==> 是时候展现真正的技术了:????????????????????????原创 2020-04-10 15:25:46 · 374 阅读 · 0 评论 -
Apache SparkStreaming 统计一定时间内的热门词汇TopN
SparkStreaming 统计一定时间内的热门词汇TopN需求模拟百度热搜排行榜统计最近10s的热搜词Top3,每隔5秒计算一次WindowDuration = 10sSlideDuration = 5s代码package demo13import org.apache.spark.rdd.RDDimport org.apache.spark.streaming.dstr...转载 2020-04-10 09:57:06 · 1097 阅读 · 0 评论 -
Apache SparkStreamig reduceByKeyAndWindow
SparkStreamig reduceByKeyAndWindow图解滑动窗口转换操作的计算过程如下图所示,我们可以事先设定一个滑动窗口的长度(也就是窗口的持续时间),并且设定滑动窗口的时间间隔(每隔多长时间执行一次计算),比如设置滑动窗口的长度(也就是窗口的持续时间)为24H,设置滑动窗口的时间间隔(每隔多长时间执行一次计算)为1H那么意思就是:每隔1H计算最近24H的数据代码...转载 2020-04-10 09:47:06 · 179 阅读 · 0 评论 -
Apache SparkStreaming updateStateByKey
SparkStreaming updateStateByKey问题在上次的那个WordCount案例中存在这样一个问题:每个批次的单词次数都被正确的统计出来,但是结果不能累加!如果需要累加需要使用updateStateByKey(func)来更新状态.代码package demo13import org.apache.spark.streaming.dstream.{DStream...转载 2020-04-10 09:34:16 · 151 阅读 · 0 评论 -
Apache SparkStreaming WordCount示例
需求首先在linux服务器上安装nc工具nc是netcat的简称,原本是用来设置路由器,我们可以利用它向某个端口发送数据yum install -y nc启动一个服务端并开放9999端口,等一下往这个端口发数据nc -lk 9999 接收数据的代码package demo13import org.apache.spark.streaming.dstream.{DStream...转载 2020-04-10 09:22:16 · 154 阅读 · 0 评论 -
Apache SparkStreaming 运行机制
SparkStreaming 运行机制Spark Streaming中,会有一个接收器组件Receiver,作为一个长期运行的task跑在一个Executor上。Receiver接收外部的数据流形成input DStreamDStream会被按照时间间隔划分成一批一批的RDD,当批处理间隔缩短到秒级时,便可以用于处理实时数据流。时间间隔的大小可以由参数指定,一般设在500毫秒到几秒之间。对...转载 2020-04-10 08:52:00 · 265 阅读 · 0 评论 -
Apache SparkStreaming 概念
SparkStreaming 概念一般的大型集群和平台, 都需要对其进行监控的需求。要针对各种数据库, 包括 MySQL, HBase 等进行监控要针对应用进行监控, 例如 Tomcat, Nginx, Node.js 等要针对硬件的一些指标进行监控, 例如 CPU, 内存, 磁盘 等http://spark.apache.org/streaming/Spark Streamin...转载 2020-04-10 08:53:02 · 246 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI RDD、DF、DS之间的相互转换
准备数据person.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40代码示例package demo12import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport org.apache.s...转载 2020-04-09 23:33:20 · 306 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI SQL与DSL
准备数据person.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40代码示例package demo12import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport org.apache.s...转载 2020-04-09 23:28:55 · 152 阅读 · 0 评论 -
Apache SparkSQL ScalaAPI 反射推断Schema
准备数据person.txt内容:1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40反射推断Schema示例代码:package demo12import org.apache.spark.SparkContextimport org.apache.spark.rdd.RDDimport ...转载 2020-04-09 23:23:47 · 200 阅读 · 0 评论 -
Apache Spark glom算子
glomdef glom(): RDD[Array[T]]该函数是将RDD中每一个分区中类型为T的元素转换成Array[T],这样每一个分区就只有一个数组元素。原创 2020-04-07 20:30:11 · 194 阅读 · 0 评论 -
Apache Spark RDD数据源
RDD数据源RDD数据源来源于五个部分:文本文件Sequence文件对象文件文件系统数据库1,文本文件sc.textFile("./dir/*.txt") 如果传递目录,则将目录下的所有文件读取作为RDD。文件路径支持通配符。但是这样对于大量的小文件读取效率并不高,应该使用wholeTextFilesdef wholeTextFiles(path: String, m...转载 2020-04-07 18:20:32 · 355 阅读 · 0 评论 -
Apache Spark RDD累加器 accumulators 和 广播变量 broadcast variables
在默认情况下,当Spark在集群的多个不同节点的多个任务上并行运行一个函数时,它会把函数中涉及到的每个变量,在每个任务上都生成一个副本。(蓝色的就是副本)但是,有时候需要在多个任务之间共享变量,或者在任务(Task)和任务控制节点(Driver Program)之间共享变量。为了满足这种需求,Spark提供了两种类型的变量:1.累加器accumulators:累加器支持在所有不同节点之间...原创 2020-04-07 16:06:43 · 296 阅读 · 0 评论 -
Apache Spark 运行过程
基本概念参考链接:http://spark.apache.org/docs/latest/cluster-overview.html1.Application:指的是用户编写的Spark应用程序/代码,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码。2.Driver:Spark中的Driver即运行上述Application的Main()函数并且创建Sp...转载 2020-04-07 15:43:43 · 187 阅读 · 0 评论