Spark学习随笔
文章平均质量分 63
CatherineHuangTT
这个作者很懒,什么都没留下…
展开
-
SparkSQL的发展历史
Hadoop刚开始出来的时候,使用的是hadoop自带的分布式计算系统MapReduce,但是MapReduce的使用难度较大,所以就开发了Hive,Hive编程用的是类SQL的HQL的语句,这样编程的难度就大大的降低了,Hive的运行原理就是将HQL语句经过语法解析、逻辑计划、物理计划转化成MapReduce程序执行。当Spark出来以后,Spark团队也开发了一个Shark,就是在Spark集原创 2017-11-22 10:24:49 · 1061 阅读 · 0 评论 -
Spark之RDD的Transformation操作
1.Java版本import org.apache.spark.Partitioner;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.ja原创 2017-11-23 22:55:28 · 417 阅读 · 0 评论 -
SparkSQL的UDF和UDAF
1.UDF2.UDAFUsers have to extend the UserDefinedAggregateFunction abstract class to implement a custom untyped aggregate function. For example, a user-defined average can look like:import org翻译 2017-11-24 09:45:03 · 297 阅读 · 0 评论 -
RDD创建的两种方式
There are two ways to create RDDs: parallelizing an existing collection in your driver program, or referencing a dataset in an external storage system, such as a shared filesystem, HDFS, HBase, or a翻译 2017-11-24 09:45:30 · 1700 阅读 · 0 评论 -
SparkCore抽象之RDD
【弹性的】分布式的数据集弹性的:灵活的Rdd的特性:1、rdd是分布式的:rdd里面的数据实际上是分布在集群的不同节点上的。注:数据是可分区的,分区的个数和hdfs上文件块的个数有关,默认一个文件块对应一个分区,一个分区对于一个rdd里面的一部分文件。2、rdd是可分区的:分区的个数是我们可以指定的,但是默认的情况下,一个hdfs上的文件块就是一个分区,一个分区对应一个rdd里转载 2017-11-24 09:45:50 · 365 阅读 · 0 评论 -
WordCount的实例
scala> sc.textFile("hdfs://hadoop1:9000/sparktest/hello.txt").flatMap( line => line.split("\t")).collectres8: Array[String] = Array(you, jump, i, jump)scala> sc.textFile("hdfs://hadoop1:9000/sparkt原创 2017-11-24 09:46:18 · 374 阅读 · 0 评论 -
Spark的概念和特征
1.spark的概念Apache Spark™ is a fast and general engine for large-scale data processing.Apache Spark 是处理大规模数据的快速的、通用的引擎。2.spark的四大特征(1)Speed(速度) Run programs up to 100x faster than Hadoop Ma转载 2017-11-24 09:46:42 · 661 阅读 · 0 评论 -
Spark的学习资料来源
(1)官方文档http://spark.apache.org/特点:会把Spark所有的功能做解释,并演示案例。(一般案例都比较经典) (2)官方博客https://databricks.com/blog特点: Spark的官方文档,确实会告诉你这些技术是如何使用。但是不告诉你为什么,举个例子,比如SparkSQL新增加了功能了。为什么会增加这个功能,这个功能转载 2017-11-24 09:47:09 · 313 阅读 · 0 评论 -
SparkStreaming数据源之Kafka
2,从Kafka里面拿数据的两种方式(1) push(推过来的) kafka,flume -> Exeuctor内存-》磁盘 处理 1)整个任务出问题了 2)整个集群宕机了 3)机房停电了 数据有可能重复消费,也有可能漏了 Spark 1.3 以后 (2) pull(拉) sparkStreaming自己去维转载 2017-11-24 09:47:28 · 386 阅读 · 0 评论 -
将单词计数的结果持久化到MySQL中
1.MySQL的连接池package streaming.utilsimport java.sql.{Connection, DriverManager}object MysqlPool { private val max=8 ;//连接池的连接总数 private val connectionNum=10;//每次产生的连接数 private var conNum=0;/转载 2017-11-24 09:48:44 · 404 阅读 · 0 评论 -
SparkStreaming之滑动窗口的实现
import org.apache.spark.SparkConfimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spark.streaming.{Seconds, StreamingContext}import org.apache.log4j.{Logge转载 2017-11-24 09:49:04 · 868 阅读 · 0 评论 -
SparkStreaming之黑名单过滤
import org.apache.spark.SparkConfimport org.apache.spark.broadcast.Broadcastimport org.apache.spark.rdd.RDDimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apach转载 2017-11-26 20:41:50 · 821 阅读 · 0 评论 -
sparkStreaming上次程序运行的结果和这次的结果进行累加
import org.apache.log4j.{Logger,Level}import org.apache.spark.SparkConfimport org.apache.spark.streaming.dstream.DStreamimport org.apache.spark.streaming.{Seconds, StreamingContext}object SparkStr转载 2017-11-26 20:42:45 · 783 阅读 · 0 评论 -
SparkStreaming之单词计数实现在一次程序的运行中,两次发送相同的key可以进行累加
import org.apache.log4j.{Level, Logger}import org.apache.spark.SparkConfimport org.apache.spark.streaming.dstream.ReceiverInputDStreamimport org.apache.spark.streaming.{Seconds, StreamingContext}转载 2017-11-26 20:43:35 · 734 阅读 · 0 评论 -
Spark的持久化
Spark的持久化级别持久化级别含义解释MEMORY_ONLY使用未序列化的Java对象格式,将数据保存在内存中。如果内存不够存放所有的数据,则数据可能就不会进行持久化。那么下次对这个RDD执行算子操作时,那些没有被持久化的数据,需要从源头处重新计算一遍。这是默认的持久化策略,使用cache()方法时,实际就是使用的这种持久化策略。转载 2017-11-23 22:55:11 · 1047 阅读 · 0 评论 -
Spark的广播变量
将每个task都要计算的数据设置成广播变量,如果不设置成广播变量,则每个task都会保存一份这样一模一样的数据,这样就占用了很多的存储空间,将共享变量设置成广播变量后只在一个excuter里面保存这样一份共享数据,这个excuter里面的task计算的时候共享这样一份数据,这样就减少了内存空间的占有率,但是这样是有前提的,前提是:被广播的变量不能太大。设置广播变量的步骤如下:sca原创 2017-11-23 22:55:02 · 639 阅读 · 0 评论 -
Spark的累加变量
当数据需要做累加的时候需要设置累加变量(比如求UV VV的时候)设置累加变量的步骤:scala> val accum = sc.accumulator(0, "My Accumulator")accum: spark.Accumulator[Int] = 0scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x原创 2017-11-23 22:54:49 · 1025 阅读 · 0 评论 -
SparkSQL的简介
SparkSQL SparkSQL是一个处理结构化数据的Spark模型,不像基本的Spark RDD的API,通过SparkSQL提供的接口可以提供更多的信息关于结构化的数据和计算,SparkSQL使用这些额外的信息进行额外的优化,有很多和SparkSQL进行交互的方式,包括:SparkSQL,SQL,the DataFrames API and the D翻译 2017-11-22 10:49:31 · 364 阅读 · 0 评论 -
RDD转化为DataFrames的两种创建方式
1.通过反射的方式 Scala的接口为SparkSQL提供了RDD通过转换成样例类,然后自动的转换成DataFrame,样例类定义了表的模式,使用反射读取case类参数的名称,并成为列的名称。case类也可以嵌套,或者包含复杂类型,如序列或数组。RDD可以隐式转换为一个DataFrame,然后被注册为一个表。表可用于后续SQL语句中。// sc is an existi翻译 2017-11-22 11:10:27 · 858 阅读 · 0 评论 -
SparkSQL的数据源
1.数据源SparkSQL的数据源:结构化的文件(json,parquet),或者是Hive的表,或者是外部的数据库(mysql),也或者是已经存在的RDD。2.load和saveSparkSQL默认的数据源的文件格式是parquetLoad是用来读取文件的时候加载文件中的数据Save是用来往外写文件的时候存储写出的数据val df = sqlContext.rea翻译 2017-11-22 11:47:16 · 924 阅读 · 0 评论 -
SparkSQL的UDF和UDAF
1.UDF注:以下的SparkSQL初始化方式不是最新的,请参考上篇博客进行修改import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.hive.HiveContextobject UDFTest { def main(args: Array[String]): Unit = {翻译 2017-11-22 13:01:02 · 411 阅读 · 0 评论 -
SparkSQL的小案例
class ApacheAccessLog( var ipAddress:String,//地址 var clientIndextd:String,//标示符 var userID:String,//用户的id va转载 2017-11-22 13:55:39 · 420 阅读 · 1 评论 -
Spark中的抽象
SparkCore SparkContext-> RDDSparkSQL SQLContext/HiveContext(SparkSession) ->DataFrame(DataSet) rddSparkStreaming StreamingContext -> DStream rdd val ssc = new StreamingCon转载 2017-11-22 14:23:01 · 480 阅读 · 0 评论 -
SparkStreaming中DStream的概念
1.DStreamStreamingContext会根据设置的批处理的时间间隔将产生的rdd归为一批,这一批rdd就是一个DStream,DStream可以通过算子操作转化为另一个DStream2.流计算的处理流程SparkStreaming的数据来源是kafka、flume、hdfs等,其中用的最多的是kafka,次子是flume,SparkStr翻译 2017-11-22 14:20:47 · 3941 阅读 · 0 评论 -
SparkStreaming的运行流程
运行流程:1、我们在集群中的其中一台机器上提交我们的Application Jar,然后就会产生一个Application,开启一个Driver,然后初始化SparkStreaming的程序入口StreamingContext;2、Master会为这个Application的运行分配资源,在集群中的一台或者多台Worker上面开启Excuter,executer会向Driver注册;转载 2017-11-22 14:11:22 · 2370 阅读 · 0 评论 -
Spark任务的提交
1.提交任务的脚本格式# Run application locally on 8 cores./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[8] \ /path/to/examples.jar \ 100# Run on a Spark standalone c转载 2017-11-23 22:52:56 · 521 阅读 · 0 评论 -
Spark的资源管理和调度模式
1.Spark-standaloneStandalone的模式下,spark的资源管理和调度是自己来管理和调度的,主要由master来管理。2.Spark-yarnResourceManagerNodeManagerApplicationMasterContainer(资源)Task Hadoop集群上面 Yarn执行任务的流程:Client提交任务给res转载 2017-11-23 22:53:23 · 4000 阅读 · 0 评论 -
Spark的运行模式
Spark的运行模式1.spark运行模式的种类无论是在哪儿提交Spark代码,每提交一个spark任务,都会开启一个driver,我们都有两种模式:Client(客户端模式):代码在哪台机器上提交的,那台机器就会开启Driver线程。Cluster(集群模式):Spark集群会在worker集群里面随机找一台机器,然后那一台就会开启一个Driver线程。2.Spark运行模式转载 2017-11-23 22:53:46 · 316 阅读 · 0 评论 -
Spark的架构和任务调度
Spark的任务调度顺序:1.首先我们会选择集群中的一台机器去提交我们的代码,我们提交的这个代码就是一个application2.如果是client的模式,会在提交任务的这台机器上面开启一个driver线程,如果是cluster的模式,会随机选择一台机器开启driver线程,driver开启以后,就开始打算执行提交的代码,开启driver的时候对SparkContext进行初始化,转载 2017-11-23 22:54:01 · 688 阅读 · 0 评论 -
Spark中的宽依赖和窄依赖
1.宽依赖和窄依赖的原理http://shiyanjun.cn/archives/744.html 窄依赖的原理:是指父RDD的分区只被子RDD的一个分区使用。 特点:(1)窄依赖允许在一个集群节点上以流水线的方式(pipeline)计算所有父分区。例如,逐个元素地执行map、然后filter操作;(2)窄依赖能够更有效地进行失效节点的恢复,即只需重新计算丢失RDD分区的转载 2017-11-23 22:54:19 · 2160 阅读 · 0 评论 -
Spark集群的搭建
1.spark集群的部署 Hadoop1Hadoop2Hadoop3datanode√√√Namenode√ Secondary √ Master原创 2017-11-23 22:54:33 · 413 阅读 · 0 评论 -
SparkStreaming快速入门程序----WordCount
import org.apache.log4j.{Level, Logger}import org.apache.spark.SparkConfimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spark.streaming.{Seconds, Streamin翻译 2017-11-26 20:44:02 · 329 阅读 · 0 评论
分享