Spark
卷曲的葡萄藤
这个作者很懒,什么都没留下…
展开
-
第一个spark程序worldcount
环境搭建,网上资源很多,不在赘述。三种方式:1、使用scala语言实现,比较简洁。package main.scala.com.thy.sparkimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object ScalaWordCount { def main(a...原创 2019-04-04 20:53:49 · 506 阅读 · 0 评论 -
Spark弹性分布式数据集介绍
弹性分布式数据集 RDD我们都知道Spark主要时以RDD的概念为中心,在对数据处理的过程中对RDD进行操作得到我我们想要的数据结果。RDD是一个容错可以执行并行的元素的集合,但是并不是实际保存数据,是对数据的引用。有两种方法创建RDD:1、在驱动程序中parallelizing一个已经存在的集合 2、外部存储中引用一个数据集(HDFS/HBase....等)。 并行集合 可...原创 2019-04-25 17:34:07 · 371 阅读 · 0 评论 -
Spark中RDD的宽依赖和窄依赖详解
宽依赖与窄依赖窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD一般对应父RDD的一个或者多个分区。(与数据规模无关)不会产生shuffle。下面的join也是窄依赖,虽然有两个父RDD,但是两个 RDD中每个分区都被一个子RDD的分区使用,即使父RDD的分区里面的内容并没有让子RDD的一个分区使用。宽依赖指父RDD的多个分区可能被子RDD的一个分区所使用,子RDD分...原创 2019-04-25 18:13:12 · 8970 阅读 · 4 评论 -
Spark处理Log文件写成Parquet文件的两种方式
我们都知道Parquet的基于列式存储的文件详情参看:https://blog.csdn.net/weixin_39043567/article/details/89874304虽然log文件是有一定的规律,但是不够规整,我们可以规整后写入到parquet文件中,使用时直接spark sql就可以都进来进行相应的操作。那么我们怎么把需要处理的log文件写成parquet文件呢?本文提供两种...原创 2019-05-06 11:04:23 · 1898 阅读 · 0 评论 -
Spark算子之fold()和aggregate()的解释
RDD算子其他的都比较好理解,唯独fold和agg这俩稍微比较难理解一点,因为scala语言这个语法个人感觉有点异于其他语言。先说说reduce()函数,他和fold()函数也就一个初始值的区别:val rdd=list1.parallelize(List(1,2,3,4))rdd.reduce((x,y)=>x+y)其实就是 1+2+3+4 返回10 ,x其实指代的就是返...原创 2019-05-08 21:41:41 · 844 阅读 · 0 评论 -
Spark的Cache和checkpoint
Checkpoint:有时候我们对RDD的计算会复杂很多,而且可能耗时很多费很大仅才会计算出来的结果,这个结果是来之不易的,以后可能还需要使用。所以希望进行持久化的操作,一遍日后使用的时候直接调用这个中间结果,不用在进行一次复杂耗时的计算。 如果persist()或者cache到内存,虽然最快速但是也是最不可靠的。磁盘相对比内存更可靠些。 Checkpoint 可以指定把数据放在本地并且是...原创 2019-05-09 11:16:11 · 689 阅读 · 0 评论 -
Spark读取字典文件放入到redis中,解决广播变量广播的数据改变的情况
有时候我们需要用广播变量来使用字典,但是如果字典中的内容是经常变化的,这是广播变量就不能满足我们的需求了。这时可以选择将字典文件读入到redis中,就能保证在字典数据变化的时候我们使用的是最新的字典了。首先,要构建一个获取jedis 客户端的类。object JedisPools { private val config = new GenericObjectPoolConfig(...原创 2019-05-06 22:40:02 · 1082 阅读 · 0 评论 -
Spark算子--map和mapPartition的区别,配实例讲解
map和mapParttion都是spark的算子,他们在进行数据处理时有一定的区别:map是RDD中的每一个元素进行操作。 mapPartition是对RDD的每一个分区的迭代器进行操作,返回的是迭代器。mapPartiton的优势:提高性能,比如我们对一个含有100条log数据的分区进行操作,使用map的话函数要执行100次计算。使用MapPartitions操作之后,一个task...原创 2019-05-07 10:49:44 · 9694 阅读 · 2 评论 -
SparkStreaming整合kafaka 0.10版本,实现实时wordcount统计
解析待更。。。package com.thy.d0421import org.apache.kafka.clients.consumer.ConsumerRecordimport org.apache.kafka.common.serialization.StringDeserializerimport org.apache.spark.{HashPartitioner, Spark...原创 2019-04-22 13:03:17 · 235 阅读 · 0 评论 -
spark之使用JdbcRdd读取Mysql中的数据
重点在new JdbcRDD时的七个参数:如下图所示package com.thy.d20190417import java.sql.DriverManagerimport org.apache.spark.rdd.JdbcRDDimport org.apache.spark.{SparkConf, SparkContext}object JdbcRDDDemo { de...原创 2019-04-17 16:54:06 · 1042 阅读 · 0 评论 -
Spark之RDD算子
#常用Transformation(即转换,延迟加载)#通过并行化scala集合创建RDDval rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8))#查看该rdd的分区数量rdd1.partitions.lengthval rdd1 = sc.parallelize(List(5,6,4,7,3,8,2,9,1,10))val rdd2 ...原创 2019-04-05 09:01:18 · 133 阅读 · 0 评论 -
Spark之TopN的实现,scala集合的排序和spark RDD的排序对比
比如有原始数据http://bigdata.bjut.edu.cn/thyhttp://java.bjut.edu.cn/lmm....等等类似的数据,最后为老师的名字,前面含有某个科目,求出某学科老师的点击量topn方法一:思路,先对数据进行处理,获取我们需要的。组合成((学科,老师),1)的形式在进行聚合,然后按照学科进行分组,最后进行排序。package ...原创 2019-04-15 22:04:31 · 992 阅读 · 0 评论 -
spark求topN问题的自定义分区器的实现
package com.thy.sparkimport java.net.URLimport scala.collection.mutableimport org.apache.spark.{Partitioner, SparkConf, SparkContext}import org.apache.spark.rdd.RDDobject GroupFavTeacher...原创 2019-04-15 22:07:49 · 482 阅读 · 0 评论 -
Spark WordCount执行流程以及相关源码
RDD是一个抽象类,操作RDD就像操作本地集合一样,降低编程难度。RDD不存真正要计算的数据,而是记录了RDD的转换关系(调用了什么方法,传入什么函数)。RDD的算子分为两类,一类是Transformation(lazy),一类是Action(触发任务执行)RDD的map方法,是Executor中执行时,是一条一条的将数据拿出来处理。创建方式:1、通过外部存储的诗句进行创建 sc.te...原创 2019-04-16 14:25:33 · 1289 阅读 · 1 评论 -
SparkSQL详解-实例
sparkSQL主页:http://spark.apache.org/sql/SparkSQL是用来处理结构化数据的一个Spark的模块,提供编程抽象叫DataFrame,进行分布式的SQL查询引擎的作用和HIve的对比,hive是将sql解析成MapReduce提交到集群上进行执行,由于效率问题不及Spark,所以SparlSQL产生,它是转换成RDD然后提交到集群上运行,效率很高。...原创 2019-04-20 20:36:54 · 895 阅读 · 0 评论 -
Spark之根据日志对IP位置统计
根据IP计算访问者归属地,按照省计算访问次数,将计算好的结果写入mysql中日志文件类型:20090121000133586141000|117.101.219.241|12.zgwow.com|/launcher/index.htm|Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)||ip规则:1.15.128.0|1.15.159.25...原创 2019-04-16 22:52:57 · 438 阅读 · 0 评论 -
SparkStreaming详解
Spark core的扩展,支持弹性,高吞吐,容错,实时数据流处理。多数据源,kafka、flume、TCP socket等 也可进行如map,reduce,join,window等高阶函数组成的复杂算法处理。处理结果写入文件系统、数据库、实时表盘中。内部工作原理是把实时输入数据流切分成多个批数据,交给spark引擎处理并分批生成数据流。提供高度抽象离散流(discretized s...原创 2019-04-28 21:27:02 · 929 阅读 · 0 评论 -
Spark实现自定义排序
第一种排序方法,比如有数据“name,age,颜值”,我们想按照颜值降序,颜值相同按照年龄升序排。思路:写个类,将切分出来的数据放入到这个类中,重写这个类的compare方法,用这个类调用sortBy方法。package com.thy.d20190417import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkCo...原创 2019-04-17 14:10:01 · 766 阅读 · 0 评论