Spark
文章平均质量分 76
象在舞
谁说大象不能跳舞!
展开
-
SparkStreaming读取Kafka对接Flume抽取到的数据库数据并保存到HBase中,Hive映射HBase进行查询
最近公司在做实时流处理方面的工作,具体需求是:将关系型数据库(MySQL、Oracle)中的相关数据表实时的导入到HBase中,并使用Hive映射HBase进行数据查询。公司使用的是CDH6.3.1搭建的大数据集群~一、配置Flume,抽取数据到Kafka 在之前,我写过一篇《Flume抽取Oracle中的数据到Kafka》的文章,里面详细的介绍了如何配置连接Oracle数据库,那么这里就以MySQL数据库为例吧,其实两者的配置大同小异,只不过改几个连接串即可,这里详细的就不...原创 2020-06-10 12:27:33 · 1745 阅读 · 0 评论 -
Spark特性之共享变量
Spark一个非常重要的特性就是共享变量。默认情况下,如果在一个算子的函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task中。此时每个task只能操作自己的那份变量副本。如果多个task想要共享某个变量,那么这种方式是做不到的。 Spark为此提供了两种共享变量,一种是Broadcast Variable(广播变量),另一种是Accumulator(累加变量)原创 2017-08-31 18:58:25 · 288 阅读 · 0 评论 -
Spark性能调优——其他调优方法
一、提高并行度实际上Spark集群的资源并不一定会被充分利用到,所以要尽量设置合理的并行度,来充分地利用集群的资源。才能充分提高Spark应用程序的性能。Spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如HDFS,就会给每一个block创建一个partition,也依据这个设置并行度。对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父R原创 2017-09-10 21:08:05 · 300 阅读 · 0 评论 -
SparkSession详解
用Spark的各项功能,用户不但可以使用DataFrame和Dataset的各种API,学习Spark的难度也会大大降低。本文就SparkSession在Spark2 0中的功能和地位加以阐释。Spark2.0中引入了SparkSession的概念,它为用户提供了一个统一的切入点来使用Spark的各项功能,用户不但可以使用DataFrame和Dataset的各种API,学习Sp转载 2017-11-09 09:02:24 · 4834 阅读 · 0 评论 -
spark2.0搭建standalone集群模式
最近因为工作,需要在已有的集群中添加spark2.0并且能够运行集群任务,原先的集群环境是基于cloudera manager搭建的,spark的版本是1.6,综合考虑之下,决定部署spark的standalone模式,具体操作过程如下:一、安装spark2.0之前首先要选择与之对应的Scala版本。这里我选用的spark版本是2.1.1,与之对应的Scala版本是2.12.2。首先...原创 2018-04-30 15:53:38 · 562 阅读 · 6 评论 -
Spark ML Pipelines(ML管道)
声明:代码主要以Scala为主,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Spark 2.0机器学习》,欢迎大家关注。一、Pipelines的主要概念 ML可以应用于各种各样的数据类型,比如向量、文本、图形和结构化数据、API采用Spark SQL的DataFrame就是为了支持各种各样的数据类型。1、T...原创 2019-04-25 20:12:05 · 1991 阅读 · 0 评论 -
Spark ML数学基础
声明:代码主要以Scala为主,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Spark 2.0机器学习》,欢迎大家关注。一、矩阵向量计算 Spark MLlib底层的向量、矩阵运算使用了Breeze库,Breeze库提供了Vector/Matrix的实现以及相应计算的接口(Linalg)。但是在MLlib里面同...原创 2019-04-26 10:07:02 · 689 阅读 · 0 评论 -
Spark ML特征的提取、转换和选择
声明:代码主要以Scala为主,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Spark 2.0机器学习》,欢迎大家关注。一、特征的提取1、TF-IDF(词频-逆向文档频率) TF(词频):HashingTF与CountVectorizer用于生成词频TF向量。HashingTF是一个特征词集的转换器(Tra...原创 2019-04-28 11:20:50 · 3855 阅读 · 5 评论 -
Spark DataSet介绍
声明:代码主要以Scala为主,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Spark 2.0机器学习》,欢迎大家关注。 Spark的发展史可以简单概括为三个阶段,分别为:RDD、DataFrame和DataSet。在Spark 2.0之前,使用Spark必须先创建SparkConf和SparkContext,不过...原创 2019-04-25 14:45:39 · 7904 阅读 · 2 评论 -
Spark ML K-Means聚类算法
声明:代码主要以Scala为主,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Spark 2.0机器学习》,欢迎大家关注。 在我的专栏《Python从入门到深度学习》中,已经介绍了两篇关于K-Means聚类的文章,分别是:《Python实现K-Means聚类算法》和《Python实现K-Means++聚类算法》。在此...原创 2019-05-13 15:32:11 · 4808 阅读 · 2 评论 -
RDD持久化
一、RDD持久化原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景,就只要对RDD计算一次即可,后面直接使用该RDD,而不需要反复计算多次原创 2017-08-31 16:07:55 · 2009 阅读 · 1 评论 -
RDD的创建与操作
一、RDD的创建 进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD。 Spark Core提供了三种创建RDD的方式,包括:使用程序原创 2017-08-30 20:32:21 · 1315 阅读 · 0 评论 -
Spark性能优化——内存的消耗
一、内存消耗在什么地方1、每个Java对象,都有一个对象头,会占用16个字节,主要是包括了一些对象的元信息,比如指向它的类的指针。如果一个对象本身很小,比如就包括了一个int类型的field,那么它的对象头实际上比对象自己还要大。2、Java的String对象,会比它内部的原始数据,要多出40个字节。因为它内部使用char数组来保存内部的字符序列的,并且还得保存诸如数组长度之类原创 2017-09-06 09:57:29 · 2290 阅读 · 0 评论 -
Spark性能优化——高性能序列化类库
一、数据序列化概述在任何分布式系统中,序列化都是扮演着一个重要的角色的。如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多。所以,进行Spark性能优化的第一步,就是进行序列化的性能优化。Spark自身默认就会在一些地方对数据进行序列化,比如Shuffle。还有就是,如果我们的算子函数使用到了外部的数据(比如Java原创 2017-09-06 10:07:19 · 516 阅读 · 0 评论 -
Spark性能优化——优化数据结构
要减少内存的消耗,除了使用高效的序列化类库以外,还有一个很重要的事情,就是优化数据结构。从而避免Java语法特性中所导致的额外内存的开销,比如基于指针的Java数据结构,以及包装类型。有一个关键的问题,就是优化什么数据结构?其实主要就是优化你的算子函数,内部使用到的局部数据,或者是算子函数外部的数据。都可以进行数据结构的优化。优化之后,都会减少其对内存的消耗和占用。如何优化原创 2017-09-06 12:25:27 · 472 阅读 · 0 评论 -
Spark性能优化——RDD持久化
如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作。那么就非常有必要对其进行持久化操作,以避免对一个RDD反复进行计算。此外,如果要保证在RDD的持久化数据可能丢失的情况下,还要保证高性能,那么可以对RDD进行Checkpoint操作。除了对多次使用的RDD进行持久化操作之外,还可以进一步优化其性能。因为很有可能,RDD的数据是持久化到内存,或者磁盘中原创 2017-09-06 12:35:16 · 574 阅读 · 0 评论 -
Spark性能优化——Java虚拟机垃圾回收调优
一、Java虚拟机垃圾回收调优的背景如果在持久化RDD的时候,持久化了大量的数据,那么Java虚拟机的垃圾回收就可能成为一个性能瓶颈。因为Java虚拟机会定期进行垃圾回收,此时就会追踪所有的java对象,并且在垃圾回收时,找到那些已经不在使用的对象,然后清理旧的对象,来给新的对象腾出内存空间。垃圾回收的性能开销,是跟内存中的对象的数量,成正比的。所以,对于垃圾回收的性能问题,首原创 2017-09-06 12:46:57 · 1773 阅读 · 0 评论 -
揭开Spark的神秘面纱
一、Spark是什么 Spark,是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等。 Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Spark Streaming用于实时流式计算,Spark MLlib用原创 2017-08-20 17:53:15 · 657 阅读 · 0 评论 -
RDD的特点
1、RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集。 2、RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。(体现出分布式数据集) 3、RDD通常通过Hadoop上的文件,即HDFS文件或者Hive表原创 2017-08-30 18:19:02 · 2185 阅读 · 0 评论 -
分别用Java、Scala、spark-shell开发wordcount程序及测试代码
1、用Java开发wordcount程序1.1测试代码(本地):package com.xzw.sparkcore;import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.j原创 2017-08-30 18:28:29 · 572 阅读 · 1 评论 -
Spark的架构原理
一、相关名词解释 Driver:Driver是Spark集群的节点之一,我们编写的Spark程序就在Driver上,由Driver进程执行。 Master:Master是个进程,主要负责资源的调度和分配,还有集群的监控,等等职责。 Worker:Worker是个进程,主要负责两个方面,一个是用自己的内存存储RDD的某个或某些partition原创 2017-08-30 19:23:36 · 375 阅读 · 0 评论 -
Spark性能优化——性能优化的重要性
由于Spark的计算本质是基于内存的,所以Spark性能程序的性能可能因为集群中的任何因素出现瓶颈:CPU、网络带宽、或者是内存。如果内存能够容纳得下所有的数据,那么网络传输和通信就会导致性能出现瓶颈。但是如果内存比较紧张,不足以放下所有的数据(比如在针对10亿以上的数据量进行计算时),还是需要对内存的使用进行性能优化的,比如说使用一些手段来减少内存的消耗。Spark性能优化,其实主要就是原创 2017-09-06 09:32:27 · 659 阅读 · 0 评论