spark

学习进度-01

时光毁灭记忆、已成空白 提交于 2020-02-01 17:48:12
首先对一些spark的基本知识进行了学习 spark的基本工作原理是:将spark的程序提交到spark集群上,在Hadoop的HDFS或者Hive上读取数据,读取的数据存放在各个spark的节点上,分布式的存放在多个节点上,主要在每个节点的内存上,这样可以加快速度。 对节点的数据进行处理,处理后的数据存放在其他的节点的内存上。对数据的 计算操作针对多个节点上的数据进行并行操作。处理之后的数据可以到hadoop或者mysql或hbase中,或者结果直接返回客户端。每一批处理的数据就是一个RDD 来源: https://www.cnblogs.com/zhaoxinhui/p/12249089.html

Apache Hudi 0.5.1版本重磅发布

五迷三道 提交于 2020-02-01 01:44:33
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2.4.4 将Avro版本从1.7.7升级到1.8.2 将Parquet版本从1.8.1升级到1.10.1 将Kafka版本从0.8.2.1升级到2.0.0,这是由于将spark-streaming-kafka artifact从0.8_2.11升级到0.10_2.11/2.12间接升级 重要:Hudi 0.5.1版本需要将spark的版本升级到2.4+ Hudi现在支持Scala 2.11和2.12,可以参考 Scala 2.12构建 来使用Scala 2.12来构建Hudi,另外, hudi-spark, hudi-utilities, hudi-spark-bundle and hudi-utilities-bundle包名现已经对应变更为 hudi-spark_{scala_version}, hudi-spark_{scala_version}, hudi-utilities_{scala_version}, hudi-spark-bundle_{scala_version}和 hudi-utilities-bundle_{scala_version}. 注意这里的scala

Spark 集群模式概述

雨燕双飞 提交于 2020-02-01 00:23:18
Spark 集群模式概述 本文档简要概述了Spark如何在群集上运行,以使您更容易理解所涉及的组件。通读 应用程序提交指南, 以了解有关在集群上启动应用程序的信息。 组件 Spark应用程序在群集上作为独立的进程集运行,由 SparkContext 主程序中的对象(称为 驱动程序 )协调。 具体来说,要在集群上运行,SparkContext可以连接到几种类型的 集群管理器 (Spark自己的独立集群管理器Mesos或YARN),它们可以在应用程序之间分配资源。连接后,Spark会在集群中的节点上获取 执行 程序,这些节点是运行计算并为您的应用程序存储数据的进程。接下来,它将您的应用程序代码(由传递给SparkContext的JAR或Python文件定义)发送给执行者。最后,SparkContext将 任务 发送给执行程序以运行。 关于此体系结构,有几点有用的注意事项: 每个应用程序都有其自己的执行程序进程,该进程在整个应用程序期间保持不变,并在多个线程中运行任务。这样的好处是可以在调度方面(每个驱动程序调度自己的任务)和执行者方面(来自不同应用程序的任务在不同JVM中运行)彼此隔离应用程序。但是,这也意味着,如果不将数据写入外部存储系统,则无法在不同的Spark应用程序(SparkContext实例)之间共享数据。 Spark与基础群集管理器无关。只要它可以获取执行程序进程

Mac下安装spark及pyspark

£可爱£侵袭症+ 提交于 2020-01-31 19:37:21
1、Mac安装python 参考: Mac安装python3 2、安装jdk jdk官网下载地址 安装完成之后终端键入: java -version 3、安装scala scala官网下载地址 下载好之后,解压Scala包,配置环境变量: vi ~/.bash_profile 在文件末尾添加: export SCALA_HOME = / 安装路径 / scala - 2.12 .8 export PATH = $PATH : $SCALA_HOME / bin 安装完成之后终端键入: scala 4、安装Spark Spark官网下载地址 下载好之后,解压Spark包,配置环境变量: vi ~/.bash_profile 在文件末尾添加: export SPARJ_HOME = / Users / qianjiangang / spark - 3.0 .0 - preview2 - bin - hadoop2 . 7 47 export PATH = $ { PATH } : $ { SPARK_HOME } / bin 保存退出。 然后终端运行命令 source ~/.bash_profile 打开mac远程登录设置——>文件共享——>远程登录: 终端进入spark安装目录的bin目录下键入: ./spark-shell 到此即安装成功。 启动spark

Spark工作原理及RDD

喜夏-厌秋 提交于 2020-01-31 14:19:41
1.基于内存 2.迭代式计算 3.分布式 基本工作原理: 将spark的程序提交到spark集群上,在Hadoop的HDFS或者Hive上读取数据,读取的数据存放在各个spark的节点上,分布式的存放在多个节点上,主要在每个节点的内存上,这样可以加快速度。 对节点的数据进行处理,处理后的数据存放在其他的节点的内存上。对数据的 计算操作针对多个节点上的数据进行并行操作。处理之后的数据可以到hadoop或者mysql或hbase中,或者结果直接返回客户端。 每一批处理的数据就是一个RDD spark开发:离线批处理,延迟性的交互式数据处理;SQL查询;实时查询。底层都是RDD和计算操作。 1.创建RDD 2.定义对RDD的计算操作 3.循环往复的过程,第一次计算之后,数据到了新的一批节点上,变成新的RDD,在进行计算操作。 4.获得最终的数据,将数据存储火哦返回给客户端。 spark与mapreduce的不同在于分布式处理,mapreduce里只有map和reduce两个 过程,spark在处理一个阶段之后可以继续处理很多个阶段,不止两个阶段,spark可以处理更多的数据 RDD(弹性分布式数据集)是spark提供的核心抽象 RDD在抽象上是一种元素集合,包含了数据,他是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据 可以被并行操作。(分布式)

spark streaming读取kakfka数据手动维护offset

白昼怎懂夜的黑 提交于 2020-01-30 23:41:13
在spark streaming读取kafka的数据中,spark streaming提供了两个接口读取kafka中的数据,分别是KafkaUtils.createDstream,KafkaUtils.createDirectStream,前者会自动把offset更新到zk中,默认会丢数据,效率低,后者不会经过zk,效率更高,需要自己手动维护offse,通过维护护offset写到zk中,保障数据零丢失,只处理一次,下面来看看KafkaUtils.createDirectStream的使用,我把zk的端口改成了9999,防止和kakfa自带的zk的端口产生冲突,下面我写了一些测试代码,经自己测试数据没任何问题,即使spark streaming挂了 ,另一方往topic中写数据,下次启动streaming程序也能读取,做到数据零丢失,不同的group.id下只读取一次,看看下面代码吧(代码是自己查看kafka中自带的接口和一些其他的资料组合而成,简单的写了一些,参数没写成配置) 来源: https://www.cnblogs.com/chong-zuo3322/p/12244342.html

Spark2.3.0+新特性

主宰稳场 提交于 2020-01-30 20:17:45
参考 http://spark.apache.org/docs/2.3.0/sql-programming-guide.html#broadcast-hint-for-sql-queries 说明 广播提示引导Spark在将每个指定表与另一个表或视图连接时广播它们。当Spark决定连接方法时,广播散列连接(i.e., BHJ)优先,即使统计数据高于配置spark.sql.autoBroadcastJoinThreshold。当连接的两边都被指定时,Spark广播统计数据较低的那一边。注意:Spark并不保证总是选择BHJ,因为并不是所有的情况(例如,完全外部连接)都支持BHJ。当选择broadcast嵌套循环连接时,我们仍然遵循提示。 SQL方式: -- We accept BROADCAST, BROADCASTJOIN and MAPJOIN for broadcast hint SELECT /*+ BROADCAST(r) */ * FROM records r JOIN src s ON r.key = s.key Scala方式: import org.apache.spark.sql.functions.broadcast broadcast(spark.table("src")).join(spark.table("records"), "key").show()

Spark SQL学习笔记

我是研究僧i 提交于 2020-01-30 20:04:12
Spark SQL概述 MapReduce有Hive作为调用接口,可以不用每次都手写MapReduce,而是让Hive自动生成MapReduce代码自己执行 那么Spark框架就有类似的产品,Shark(完全照搬Hive的设计 Shark两个缺点 因为完全照搬Hive,Hive是针对MapRudece开发的,所以Shark照搬了Hive就不好对Spark进行新增优化策略 Spark线程级运行,MapReduce进程级运行,这样会产生线程安全问题,需要打补丁 然后就出现了Spark SQL 然后有了新的数据类型,DataFrame,支持SQL查询—之前Spark对RDD进行操作 RDD和DataFrame的区别 DataFrame创建 Spark Shell 会自动帮你创建sc对象和SparkSession对象 可以在Spark SQL读写数据的操作中看到,我们启动spark-shell的时候,会输出下面两条语句 Spark context available as 'sc' (master = local[*], app id = local-1575509509014). Spark session available as 'spark'. ## 终端1 scala > val peopleDF = spark.read.format ( "json" ) .load (

spark RDD基础装换操作--randomSplit操作

删除回忆录丶 提交于 2020-01-30 13:41:44
12.randomSplit操作 将由数字1~10组成的RDD,用randomSplit操作拆分成3个RDD。 scala> val rddData1 = sc.parallelize(1 to 10,3) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[28] at parallelize at <console>:24 scala> val splitRDD = rddData1.randomSplit(Array(1,4,5)) splitRDD: Array[org.apache.spark.rdd.RDD[Int]] = Array(MapPartitionsRDD[29] at randomSplit at <console>:26, MapPartitionsRDD[30] at randomSplit at <console>:26, MapPartitionsRDD[31] at randomSplit at <console>:26) scala> splitRDD(0).collect res9: Array[Int] = Array(3) scala> splitRDD(1).collect res10: Array[Int] = Array(2, 7) scala>

Spark性能调优-集群资源分配策略

懵懂的女人 提交于 2020-01-30 06:28:51
展开 开发完成Spark作业之后,我们在运行Spark作业的时候需要为其配置一些资源参数,比如num-executors,executor-memory等,这些参数基本上都是可以在spark-submit命令中作为参数设置,但是如何设置合适的参数值是需要我们权衡考虑的(集群资源,调优经验,任务大小等)。参数设置的不合适往往会导致集群资源得不到有效的利用,设置的太大可能会导致资源不够而引发异常,太小的话会使得闲置的资源得不到有效利用,作业运行的极为缓慢。所以,如何合理有效的分配Spark作业资源是需要Spark学习者重点考虑的。下面将一些理论知识结合自己的实践进行讲解。 集群资源情况 我们在为自己的Spark作业设置资源参数的时候,需要对公司的集群资源使用情况有一个较为清晰的了解,主要了解以下几个方面: (1)集群总体情况 公司集群的整体配置信息,比如总内存,内存使用情况,节点数等,对集群的资源有一个整体的认识。 可以从Yarn页面来了解集群整体情况,如红线圈出的一些重要信息: (2)资源队列配置 一般使用资源管理器,比如Yarn,都会设置一些资源队列,比如Hadoop,Spark,default队列等。这里以讯飞公司情况为例讲解,讯飞使用Yarn资源管理器,这里采用Capacity Scheduler任务调度模式,设置了两个资源队列:default和Spark