spark
天ヾ道℡酬勤
这个作者很懒,什么都没留下…
展开
-
Spark中DataFrame与Pandas中DataFrame相互转换
Spark中DataFrame前面已经给大家介绍过了,以及RDD、DataSet、DataFrame之间相互转换,而PySpark可以说是Spark和python的结合体,PySpark中也使用DataFrame,也可以与RDD、DataSet之间相互转换,其实python中有个Pandas库,也有DataFrame,是由多列Series组成的数据结构,有时需要将他们相互转化才能使用。Spark与Pandas中的DataFrame相互转换import pandas as pdfrom pyspark原创 2020-09-17 16:47:01 · 5583 阅读 · 1 评论 -
Spark之报错java.lang.StackOverflowError(栈溢出) 解决方案
前面在运行Spark项目的时候,突然就报了个错:java.lang.StackOverflowError,以前也没出现过这种情况,原来是栈溢出,内存不够导致的。需要在spark的配置文件中添加新的内存信息。vi /opt/soft/spark234/confcp spark-defaults.conf.template spark-defaults.conf vi spark-defaults.conf//添加以下配置信息spark.driver.extraJavaOptions="-原创 2020-09-17 14:16:55 · 2671 阅读 · 1 评论 -
Spark连接Hbase并写入数据的两种方法
前面和大家聊过Spark和Hive的集成,以及如何连接MySQL,今天主要就说下Spark连接Hbase,这可能要复杂一点,首先Hbase是列式存储的,结构可能和前面所说的数据库不一样,这样就必须要转换,而且导的依赖包也不一样,不是在maven仓库中所下的。下面就和大家说下。导入依赖包接下来spark集成hbase,把hbase中lib下的以下jar包拷贝到spark中的jars文件夹下面:导入后重新启动Spark就可以了。有时会报zookeeper的错误,这时可以把zookeeper-3.4.6原创 2020-09-15 19:49:28 · 3968 阅读 · 4 评论 -
DStream之转换操作(Transformation)
与 RDDs 类似,转换允许修改输入 DStream 中的数据。DStreams 支持许多在普通 Spark RDD 上可用的转换算子。一些常见的转换操作定义如下:map(func)通过函数 func 传递源 DStream 的每个元素来返回一个新的DStream。flatMap(func)与 map 类似,但是每个输入项可以映射到 0 或多个输出项。filter(func)通过只选择 func 返回 true 的源 DStream 的记录来返回一个新的 DStream。repartition原创 2020-09-09 20:09:04 · 2463 阅读 · 0 评论 -
Spark Streaming 两种方式连接 Flume
Spark Streaming 通过 Push 和 Pull 两种方式对接 Flume 数据源。以 Spark Streaming 的角度来看,Push 方式属于推送(由 Flume 向 Spark 推送);而 Pull 属于拉取(Spark 拉取 Flume 的输出)。不论以何种方式,开发过程类似,都是由 Spark Streaming 对接 Flume 数据流,Flume 做为 Spark Streaming 的数据源。Push 和 Pull 两者的差别主要体现在Flume Sink 的不同,而 Fl原创 2020-09-08 20:00:24 · 985 阅读 · 1 评论 -
Spark Streaming读取kafka中数据详解
话不多说今天就给大家说下Spark Streaming如何读取Kafka中数据先导依赖包到pom.xml<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.11</artifactId> <version>2.3.4</version></dependency>&l原创 2020-09-07 23:49:22 · 929 阅读 · 0 评论 -
Spark Streaming之window(窗口操作)
Spark Streaming 还提供了窗口的计算,它允许通过滑动窗口对数据进行转换,窗口转换操作如下图 所示:在 Spark Streaming 中,数据处理是按批进行的,而数据采集是逐条进行的,因此在 Spark Streaming 中会先设置好批处理间隔,当超过批处理间隔的时候就会把采集到的数据汇总起来成为一批数据交给系统去处理。对于窗口操作而言,在其窗口内部会有 N 个批处理数据,批处理数据的大小由窗口间隔决定,而窗口间隔指的就是窗口的持续时间。在窗口操作中,只有窗口的长度满足了才会触发批数原创 2020-09-07 19:58:58 · 4069 阅读 · 0 评论 -
SparkStreaming之DStream
离散流或 DStream 是 Spark Streaming 提供的高级别抽象。它表示连续的数据流,可以是从源接收到的输入数据流,也可以是通过转换输入流生成的经过处理的数据流。在内部,DStream 由一系列连续的 RDDs 表示,RDDs 是 Spark 对不可变的分布式数据集的抽象。DStream 中的每个 RDD 包含来自某个间隔(batch interval)的数据,如下图所示:应用于DStream上的任何操作都转换为底层RDDs上的操作。Input DStreams 与 Receivers原创 2020-09-04 19:00:17 · 599 阅读 · 0 评论 -
SparkStreaming之StreamingContext应用
要初始化一个 Spark Streaming 程序,必须创建一个 StreamingContext 对象,该对象是 SparkStreaming 流处理的编程入口点。2.2版本SparkSession未整合StreamingContext,所以仍需单独创建。创建 StreamingContext 对象Spark Streaming 初始化的主要工作是创建 Streaming Context 对象,通过创建函数的参数指明 Master Server,设定应用名称,指定 Spark Streaming 处理原创 2020-09-04 16:53:48 · 1419 阅读 · 0 评论 -
Spark核心之Spark Streaming
前面说到Spark的核心技术的时候,有和大家说过,有五大核心技术,不知道大家还记不记得;给大家回忆下,这五大核心技术:分布式计算引擎Spark Core 、基于Hadoop的SQL解决方案SparkSQL 、可以实现高吞吐量、具备容错机制的准实时流处理系统Spark Streaming、分布式图处理框架Spark GraphX和构建在Spark上的分布式机器学习库Spark MLlib,现在应该有个印象了吧,其它的我就不多说了,今天主要是对Spark Streaming做个简单介绍,以便理解。Sp原创 2020-09-03 00:44:21 · 1766 阅读 · 0 评论 -
Spark之RDD、DataSet、DataFrame转换
前面已经给大家说过RDD、DataSet、DataFrame三者之间的关系以及区别,各自都有各自的优劣。RDD、DataFrame、Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换。今天就给大家说说他们直接按的无缝转换。DataFrame/Dataset转RDD这个转换很简单,只需要在类型的后面.rdd就可以转换成RDD。如何创建DataFrame/Dataset的方法在前面已经说过在这里就不多说了。val createDS = spark.createDataset(1 to原创 2020-08-16 21:17:20 · 874 阅读 · 0 评论 -
论RDD、DataSet、DataFrame关系及优劣
前面已经给大家深入的讲解过RDD、DataSet、DataFrame的概念已经用法,那么到底这三者有什么关联呢?各自都有什么优劣?带着这这样的问题,今天小编就给大家详细的概述下。在spark中,基本每次都会用到这三个类型,因为这是spark最常用的数据类型。相同点1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action算子如foreach时,三者才会开始原创 2020-08-15 03:52:12 · 4233 阅读 · 2 评论 -
Spark之Spark Session、Dataframe、Dataset
Spark SQL简介Spark SQL架构:Spark SQL是Spark的核心组件之一(2014.4 Spark1.0)能够直接访问现存的Hive数据提供JDBC/ODBC接口供第三方工具借助Spark进行数据处理提供了更高层级的接口方便地处理数据支持多种操作方式:SQL、API编程支持多种外部数据源:Parquet、JSON、RDBMS等Spark SQL是Spark的一个模块,主要用于处理结构化的数据。与基础的Spark RDD API不同的是,Spark SQL的接口会向提供原创 2020-08-15 01:34:22 · 1230 阅读 · 0 评论 -
Spark连接mysql的多种方式
大家都知道Spark可以和各种数据库进行连接并读取数据,前面已经和大家说过如何使用spark连接hive,今天就说说如何连接mysql并读取数据。方法一:在linux下使用spark连接mysql首先在hive的 lib中拷贝mysql依赖包到spark的jars下或者直接把驱动包复制到jars目录下cp /opt/soft/hive110/lib/mysql-connector-java-5.1.38.jar /opt/soft/spark240/jars/在bin目录下启动./spark-she原创 2020-08-13 20:09:16 · 2360 阅读 · 0 评论 -
Spark完全分布式集群搭建
前面已经给大家讲解过伪分布式spark的安装,和hadoop集群、以及zookeeper集群的搭建,今天就给大家说下Spark完全分布式集群搭建。前提是已经搭建好了hadoop集群和zookeeper集群。和前面创建时候一样,我们还是用3台机来搭建,一台主机,两台从机,就和hadoop集群搭建时候的步骤一样;分别为每台虚拟机设置主机名:hostname spark1hostname spark2hostname spark3前面已经搭建过一个伪分布式的spark就不多说了,没安装好的可以去重新原创 2020-08-09 22:14:15 · 1343 阅读 · 0 评论 -
Spark之数据倾斜完美解决方案
前面给大家讲过MapReduce的数据倾斜解决方案以及优化,今天就给大家说下Spark的数据倾斜解决方案。简单来说数据倾斜就是数据的 key 的分化严重不均,造成一部分数据很多,一部分数据很少的局面,即数据分布不均。如下图所示:以 WordCount 为例,它的 map 阶段形成 (“xxxx”,1)的形式,然后在 reduce 阶段进行 value 相加,得出 “xxxx” 出现的次数。若进行 WordCount 的文本有100G,其中 80G 全部是 “xxxx”, 剩下 20G 是其余单词,那就原创 2020-08-09 15:38:57 · 2159 阅读 · 0 评论 -
Spark Shuffle之Write 和 Read
前面已经和大家提到过Shuffle的具体流程和运用场景,也提到过通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝处理。Shuffle Write理解:提供数据的一端,被称作 Map 端,Map 端每个生成数据的任务称为Mapper;将在map端的Shuffle称之为Shuffle Write。Shuffle Read理解:接收数据的一端,被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer;将在Reduce端的Shuffle称之为Shuff原创 2020-08-09 02:11:48 · 6839 阅读 · 0 评论 -
Spark之RDD持久化大全
什么是持久化?持久化的意思就是说将RDD的数据缓存到内存中或者持久化到磁盘上,只需要缓存一次,后面对这个RDD做任何计算或者操作,可以直接从缓存中或者磁盘上获得,可以大大加快后续RDD的计算速度。为什么要持久化?在之前的文章中讲到Spark中有tranformation和action两类算子,tranformation算子具有lazy特性,只有action算子才会触发job的开始,从而去执行action算子之前定义的tranformation算子,从hdfs中读取数据等,计算完成之后,Spark会将内原创 2020-08-08 10:41:34 · 2659 阅读 · 0 评论 -
Spark之Shuffle总结
Shuffle概念shuffle,是一种多对多的依赖关系,即每个Reduce Task从每个Map Task产生数的据中读取一片数据,极限情况下可能触发M*R个数据拷贝通道(M是Map Task数目,R是Reduce Task数目)。Shuffle描述着数据从map task输出到reduce task输入的这段过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情原创 2020-08-08 08:09:31 · 2901 阅读 · 0 评论 -
Spark之RDD动作算子(Action)大全
前面已经给大家讲过RDD原理以及常用的转换算子,今天就再给大家说说RDD的动作算子有哪些,以便大家更能全面的理解和掌握。对于动作算子来说,本质上动作算子是通过SparkContext执行提交作业操作,触发RDD DAG(有向无环图)的执行;所有的动作算子都是急迫型(non-lazy),RDD遇到Action就会立即计算。常用动作算子count返回数据集中的元素的个数案例:val rdd=sc.parallelize(List(1,2,3,4,5,6))rdd.count//6coll原创 2020-08-07 02:40:26 · 5200 阅读 · 0 评论 -
Spark之RDD转换算子(transformation)大全
前面已经给大家讲过RDD原理,今天就给大家说说RDD的转换算子有哪些,以便大家理解。对于转换操作,RDD的所有转换都不会直接计算结果,仅记录作用于RDD上的操作,当遇到动作算子(Action)时才会进行真正计算,理解了转换算子的用途,那么接下来就不能理解哪些是转换算子了,通俗的说只要没有经过聚合或计算的算子,都可以当作转换算子。常用转换算子map对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD任何原RDD中的元素在新RDD中都有且只有一个元素与之对应输入分区与输出分区一一对应案原创 2020-08-07 01:02:58 · 4495 阅读 · 0 评论 -
Spark之RDD(弹性分布式数据集) 详解
1.RDD简述RDD简单的解释:RDD是将数据项拆分为多个分区的集合,存储在集群的工作节点上的内存和磁盘中,并执行正确的操作。复杂的解释:RDD是用于数据转换的接口,如map算子、filter算子;RDD指向了存储在HDFS、Cassandra、 HBase等、 或缓存(内存、内存+磁盘、仅磁盘等),或在故障或缓存收回时重新计算其他RDD分区中的数据RDD(Resilient Distributed Dataset):弹性分布式数据集,Spark计算的基石,为用户屏蔽了底层对数据的复杂抽象和处原创 2020-08-04 20:15:37 · 4438 阅读 · 0 评论 -
Spark连接hive的多种方式,并处理数据
大家都知道,Spark可以和各种数据库进行连接并读取数据,今天就说说如何连接hive并读取数据。方法一:在IDEA中连接hive在pom.xml中添加依赖导入mysql的驱动包和spark连接hive的驱动包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>原创 2020-08-03 22:10:23 · 5249 阅读 · 1 评论 -
Spark项目部署到linux系统中运行
当把Spark项目部署到linux系统中时,如果按照像导maven项目那样导胖瘦包的话,会报错,找不到scala的包,必须导入scala的包才行,在linux系统下的的操作命令也不一样,话不多说,先在pom.xml中导包:...原创 2020-07-29 17:11:39 · 1297 阅读 · 0 评论 -
Spark简介以及最详细安装教程
首先来聊聊什么是Spark?为什么现在那么多人都用Spark?Spark简介:Spark是一种通用的大数据计算框架,是基于**RDD(弹性分布式数据集)**的一种计算模型。那到底是什么呢?可能很多人还不是太理解,通俗讲就是可以分布式处理大量集数据的,将大量集数据先拆分,分别进行计算,然后再将计算后的结果进行合并。为什么使用Spark...原创 2020-07-29 02:13:31 · 31289 阅读 · 3 评论