Spark - 熟练应用
文章平均质量分 84
关注Spark技术生态及核心编程
不埋雷的探长
深耕BigData技术,专注于大数据技术领域的知识分享。CSDN认证博客专家,目前就职于腾讯,内推可私聊~ 热爱软件,喜欢编程的阳光小伙子~ 千万千万不要放弃学习,千万千万要搞好人际关际,共勉~
展开
-
大数据仓库建设质量度量体系构建【已实践】
先来回忆一下数仓建设经常遇到的一些坑 或 现象~ 还在为如何评估数仓建设质量而犯愁么?本文在常规的分层建设、划分主题外将带大家一起探索出了一条可在大、小团队均可实施落地的数仓建设质量体系构建之路。 为此,从完善度、复用度、规范度、资源度全面衡量数仓建设质量。那问题来了,如何构建这4个核心指标呢。如下表所示: 现在有了数仓质量的度量指标体系,新问题也来了。现有的任务及库表在线上运行及相互依赖引用极多,直接贸然改动可能引起线上问题!!!那该如何“落地”呢?1、任务名称规原创 2022-10-24 22:38:02 · 661 阅读 · 0 评论 -
Spark 技术调优,别告诉我你不会?
目录一、性能调优二、jvm调优三、shuffle调优(优先使用前面两点,实测有效)四、算子调优五、troubleshooting六、数据倾斜解决方案一、性能调优1.1 配更多资源: --num-executors 3 \配置executor的数量--driver-memory 100m \配置driver的内存(影响不大) --executor-memory 100m \配置每个executor的内存大小 --executor-cores 3 \...原创 2020-10-24 23:13:48 · 482 阅读 · 3 评论 -
故障解决:spark 访问hive 库、表报错 org.apache.spark.sql.AnalysisException: Table or view not found
1、spark项目 + 外部配置文件【最优,如CDH平台,配置改变,无需重新编译、打包】2、spark项目(resources目录下存放hive-site.xml)【次之,如果配置变动需要更新配置文件,重新编译打包】3、spark项目(在代码中写死配置选项)【最差,涉及配置修改后,需要对代码修改,然后重新编译打包】...原创 2020-09-23 22:32:19 · 11466 阅读 · 10 评论 -
机器学习 —— 二分类算法(Titanic号乘客生存预测)
目录二分类情景说明机器学习流程1-of-K(哑编码)处理特别特征数据,将其转换成向量A.性别类别(非数值类型)特征转换成特征向量B. 对Age特征的特征向量处理C. 分类算法介绍代码实现及运行二分类情景说明预测Titanic 号上的乘客生存概率预测乘客是否遇难,是一个二分类问题,所以我们可以使用二分类来分解乘客是否生存,可以看成是乘客的标签 乘客的基本信息,可以看成是乘客的特征 目标:通过乘客的特征,来预测乘客的生存状况,即预测乘客的标签(生存/遇难)..原创 2020-09-13 11:31:36 · 1118 阅读 · 1 评论 -
Spark 机器学习概述【理清什么是机器学习,它能做什么】
一、什么是人工智能人工智能(Artificial Intelligence),英文缩写为AI,它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器(让机器实现原来只有人类才能完成的任务其核心是算法),该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应该领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智能的原创 2020-09-01 09:53:37 · 660 阅读 · 1 评论 -
机器学习 —— 基于Spark ML 的文本分类实现语境分类【实用】
前提了解,为什么会有文本分类?什么是 Word Embedding ?在说明 Word2vec 之前,需要先解释一下 Word Embedding。 它就是将“不可计算”“非结构化”的词转化为“可计算”“结构化”的向量。将现实问题转化为数学问题只是第一步,后面还需要求解这个数学问题。所以 Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量。因为在后续的任务中会直接用到这个词向量。什么是 Word2vec ?Word2vec 是 Word Embedding 的原创 2020-07-27 10:21:16 · 503 阅读 · 0 评论 -
Spark 核心技术链接
【重点推荐】实战示例:分享大数据Spark常用操作示例,含有scala版、对应的java8 lambda版本,记得star【面试类型】聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂【Spark原理】spark中job,stage,task之间的关系【Spark原理】Spark 启动Master失败原因分析【Spark原理】示例演示:Spark性能优化之RDD持久化【Spark原理】实例验证spark开发中的map与flatmap...原创 2020-07-25 11:17:54 · 1429 阅读 · 1 评论 -
实战示例:分享大数据Spark常用操作示例,含有scala版、对应的java8 lambda版本
Spark开发语言选择说明: 在生产环境中,每家公司会根据自身的技术储备情况选择对应的开发语言进行Spark应用开发。拿我们公司的例子,因为我们主要是熟悉java,所以更适合选择java开发。目前,市面上如果选用java进行Spark应用开发,大部分会优先选用java8 lambda表达式进行开发;如果团队中都是新成员,或者大部分人都熟悉scala,则可以选用scala进行开发。...原创 2020-03-10 22:23:32 · 443 阅读 · 0 评论 -
6.Spark Streaming:输入DStream和Receiver详解
输入DStream和Receiver详解(一)输入DStream代表了来自数据源的输入数据流。在之前的wordcount例子中,lines就是一个输入DStream(JavaReceiverInputDStream),代表了从netcat(nc)服务接收到的数据流。除了文件数据流之外,所有的输入DStream都会绑定一个Receiver对象,该对象是一个关键的组件,用来从数据源接收数据,并将原创 2017-11-16 22:30:33 · 1920 阅读 · 0 评论 -
5.Spark Streaming:StreamingContext详解
StreamingContext详解(一)有两种创建StreamingContext的方式:val conf = new SparkConf().setAppName(appName).setMaster(master);val ssc = new StreamingContext(conf, Seconds(1));StreamingContext,还可以使用已有的Spar原创 2017-11-16 22:23:55 · 4753 阅读 · 0 评论 -
4.Spark Streaming:实时wordcount程序开发
1、安装nc工具:yum install nc,然后运行nc -lk 99992、开发实时wordcount程序java版本package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkConf;import org.apache.spark.api.java原创 2017-11-16 21:30:19 · 532 阅读 · 0 评论 -
14.Spark SQL:UDAF自定义聚合函数实战
UDAF自定义函数实战UDAF:User Defined Aggregate Function。用户自定义聚合函数。是Spark 1.5.x引入的最新特性。UDF,其实更多的是针对单行输入,返回一个输出这里的UDAF,则可以针对多行输入,进行聚合计算,返回一个输出,功能更加强大package cn.spark.study.sql import org.apache.原创 2017-11-16 21:27:25 · 2548 阅读 · 0 评论 -
14.DStream的output操作以及foreachRDD详解
output操作概览OutputMeaningprint打印每个batch中的前10个元素,主要用于测试,或者是不需要执行什么output操作时,用于简单触发一下job。saveAsTextFile(prefix, [suffix])将每个batch的数据保存到文件中。每个batch的文件的命名格式原创 2020-08-05 14:26:39 · 512 阅读 · 0 评论 -
Spark中mapToPair和flatMapToPair的区别【附示例源码及运行结果】
本文介绍了Spark中mapToPair和flatMapToPair的区别。函数原型1.JavaPairRDD<K2,V2> mapToPair(PairFunction<T,K2,V2> f)此函数会对一个RDD中的每个元素调用f函数,其中原来RDD中的每一个元素都是T类型的,调用f函数后会进行一定的操作把每个元素都转换成一个<K2,V2>类...原创 2018-10-27 17:10:51 · 8808 阅读 · 2 评论 -
7.Spark Streaming:输入DStream之基础数据源以及基于HDFS的实时wordcount程序
输入DStream之基础数据源HDFS文件基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实时处理。相当于处理实时的文件流。streamingContext.fileStream(dataDirectory)streamingContext.fileStream[KeyClass, ValueClass, InputFormatClass](dat原创 2017-11-16 22:32:25 · 1020 阅读 · 0 评论 -
8.输入DStream之Kafka数据源实战(基于Receiver的方式)
基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的,然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据原创 2017-11-16 22:39:46 · 1442 阅读 · 0 评论 -
9.输入DStream之Kafka数据源实战(基于Direct的方式)
基于Direct的方式这种新的不基于Receiver的直接方式,是在Spark 1.3中引入的,从而能够确保更加健壮的机制。替代掉使用Receiver来接收数据后,这种方式会周期性地查询Kafka,来获得每个topic+partition的最新的offset,从而定义每个batch的offset的范围。当处理数据的job启动时,就会使用Kafka的简单consumer api来获取Kafk原创 2017-11-16 22:45:00 · 728 阅读 · 0 评论 -
示例演示:Spark性能优化之RDD持久化
Spark非常重要的一个功能特性就是可以将RDD持久化在内存中。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景,就只要对RDD计算一次即可,后面直接使用该RDD,而不需要反复计算多次该RDD。 巧...原创 2018-10-29 16:02:46 · 488 阅读 · 0 评论 -
实例验证spark开发中的map与flatmap的区别
经常在map与flatmap中混淆,应该很多开发人员也会犯这个错误。 不多说,上实例验证一下: 在spark集群中使用spark-shell对hdfs文件进行map、flatmap操作:map操作及结果:flatmap操作及结果:总结:map操作结果:Array[Array[String]] = Array(Arr...原创 2018-10-27 23:24:08 · 1097 阅读 · 0 评论 -
spark中job,stage,task之间的关系
1.什么是jobJob简单讲就是提交给spark的任务。2.什么是stageStage是每一个job处理过程要分为的几个阶段。3什么是taskTask是每一个job处理过程要分几为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。3.Job和stage和task之间有什么关系Job----> 一个或多个stage---...原创 2018-11-20 15:37:15 · 5250 阅读 · 0 评论 -
Spark 启动Master失败原因分析
最近在自己的笔记本上将虚拟机的CentOS修改了内存,由原来的的1g修改为512M。再次启动Spark集群时,发现启动不了。 分析步骤: 1.首先查看启动过程是否有报错,结果真有报错,具体如下: 显示启动Master失败了,错误日志存放在/root/hs_err_pid4432.log文件中2.打开日志文件,显示如下:3.大致原因找到,去虚拟机...原创 2018-11-15 10:06:03 · 5029 阅读 · 0 评论 -
7.Spark SQL:JSON数据源
JSON数据源Spark SQL可以自动推断JSON文件的元数据,并且加载其数据,创建一个DataFrame。可以使用SQLContext.read.json()方法,针对一个元素类型为String的RDD,或者是一个JSON文件。但是要注意的是,这里使用的JSON文件与传统意义上的JSON文件是不一样的。每行都必须,也只能包含一个,单独的,自包含的,有效的JSON对象。不能让一个JSON原创 2017-10-16 23:06:37 · 345 阅读 · 0 评论 -
3.Spark Streaming:与Storm的对比分析
Spark Streaming与Storm的优劣分析事实上,Spark Streaming绝对谈不上比Storm优秀。这两个框架在实时计算领域中,都很优秀,只是擅长的细分场景并不相同。Spark Streaming仅仅在吞吐量上比Storm要优秀,而吞吐量这一点,也是历来挺Spark Streaming,贬Storm的人着重强调的。但是问题是,是不是在所有的实时计算场景下,都那么注重吞原创 2017-11-14 22:19:49 · 435 阅读 · 0 评论 -
1. 大数据实时计算介绍
Spark Streaming,其实就是一种Spark提供的,对于大数据,进行实时计算的一种框架。它的底层,其实,也是基于我们之前讲解的Spark Core的。基本的计算模型,还是基于内存的大数据实时计算模型。而且,它的底层的组件或者叫做概念,其实还是最核心的RDD。只不多,针对实时计算的特点,在RDD之上,进行了一层封装,叫做DStream。其实,学过了Spark SQL之后,你理解这种原创 2017-11-14 22:03:37 · 3777 阅读 · 0 评论 -
2.Spark Streaming:基本工作原理
Spark Streaming简介Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者是TCP Socket。并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join和window。处原创 2017-11-14 22:05:56 · 1003 阅读 · 0 评论 -
2.Spark SQL:数据源之通用的load和save操作
通用的load和save操作对于Spark SQL的DataFrame来说,无论是从什么数据源创建出来的DataFrame,都有一些共同的load和save操作。load操作主要用于加载数据,创建出DataFrame;save操作,主要用于将DataFrame中的数据保存到文件中。Java版本DataFrame df = sqlContext.read().load("users.pa原创 2017-10-16 22:35:16 · 471 阅读 · 0 评论 -
3.Spark SQL:使用反射方式、编程方式,将RDD转换为DataFrame
RDD转换为DataFrame 为什么要将RDD转换为DataFrame?因为这样的话,我们就可以直接针对HDFS等任何可以构建为RDD的数据,使用Spark SQL进行SQL查询了。这个功能是无比强大的。想象一下,针对HDFS中的数据,直接就可以使用SQL进行查询。Spark SQL支持两种方式来将RDD转换为DataFrame。第一种方式,是使用反射来推断包含了特定数据类型的RD原创 2017-10-16 22:54:16 · 1665 阅读 · 0 评论 -
4.Spark SQL:数据源Parquet之使用编程方式加载数据
数据源Parquet之使用编程方式加载数据 Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.0。列式存储和行式存储相比有哪些优势呢?1、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。2、压缩编码可以降低磁盘存储空间。由于同一列的数据类型原创 2017-10-16 22:58:51 · 286 阅读 · 0 评论 -
5.Spark SQL:Parquet数据源之自动分区推断
自动分区推断(一) 表分区是一种常见的优化方式,比如Hive中就提供了表分区的特性。在一个分区表中,不同分区的数据通常存储在不同的目录中,分区列的值通常就包含在了分区目录的目录名中。Spark SQL中的Parquet数据源,支持自动根据目录名推断出分区信息。例如,如果将人口数据存储在分区表中,并且使用性别和国家作为分区列。那么目录结构可能如下所示:tableName |- gen原创 2017-10-16 23:02:42 · 1501 阅读 · 7 评论 -
6.Spark SQL:Parquet数据源之合并元数据
合并元数据如同ProtocolBuffer,Avro,Thrift一样,Parquet也是支持元数据合并的。用户可以在一开始就定义一个简单的元数据,然后随着业务需要,逐渐往元数据中添加更多的列。在这种情况下,用户可能会创建多个Parquet文件,有着多个不同的但是却互相兼容的元数据。Parquet数据源支持自动推断出这种情况,并且进行多个Parquet文件的元数据的合并。因为元数据合并是一原创 2017-10-16 23:05:18 · 798 阅读 · 0 评论 -
8.Spark SQL:Hive数据源实战
Hive数据源实战Spark SQL支持对Hive中存储的数据进行读写。操作Hive中的数据时,必须创建HiveContext,而不是SQLContext。HiveContext继承自SQLContext,但是增加了在Hive元数据库中查找表,以及用HiveQL语法编写SQL的功能。除了sql()方法,HiveContext还提供了hql()方法,从而用Hive语法来编译sql。使用Hiv原创 2017-10-16 23:08:28 · 1076 阅读 · 0 评论 -
10.Spark SQL:销售额统计案例实战
SparkSQL内置函数以及每日UV销售额统计案例实战java版本:java版本:package cn.spark.study.sql;import java.util.Arrays;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.Jav原创 2017-11-02 17:16:26 · 1663 阅读 · 0 评论 -
9. Spark SQL:JDBC数据源实战
Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据。读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种算子进行处理。这里有一个经验之谈,实际上用Spark SQL处理JDBC中的数据是非常有用的。比如说,你的MySQL业务数据库中,有大量的数据,比如1000万,然后,你现在需要编写一个程序,对线上的脏数据某种复杂业务逻辑的处理原创 2017-10-31 20:55:11 · 560 阅读 · 0 评论 -
三种方法实现Spark计算WordCount
1.spark-shellval lines = sc.textFile("hdfs://spark1:9000/spark.txt")val words = lines.flatMap(line => line.split(" "))val pairs = words.map(word => (word, 1))val wordCounts = pairs.reduceByKey(原创 2017-08-20 21:10:23 · 2930 阅读 · 0 评论 -
1.Spark SQL:DataFrame的使用
Spark SQL and DataFrame引言Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark SQL还可以作为分布式的SQL查询引擎。Spark SQL最重要的功能之一,就是从Hive中查询数据。DataFrame,可以理解为是,以列的形式组织的,分布式的数据集合。它其实和关系型数据库中的表原创 2017-10-16 22:26:43 · 395 阅读 · 0 评论 -
10.Spark SQL:内置函数以及每日uv
Spark SQL:内置函数以及每日uvjava版本:package cn.spark.study.sql;import java.util.Arrays;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org原创 2017-11-02 17:20:57 · 536 阅读 · 0 评论 -
13.Spark SQL:UDF自定义函数实战
UDF:User Defined Function。用户自定义函数。scala版本package cn.spark.study.sqlimport org.apache.spark.SparkConf;import org.apache.spark.SparkContext;import org.apache.spark.sql.SQLContext;import org.原创 2017-11-14 22:00:39 · 1471 阅读 · 0 评论 -
13.window滑动窗口以及热点搜索词滑动统计案例实战
window滑动窗口Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD。比如下图中,就是对每三秒钟的数据执行一次滑动窗口计算,这3秒内的3个RDD会被聚合起来进行处理,然后过了两秒钟,又会对最近三秒内的数据执行滑动原创 2017-11-18 21:52:16 · 966 阅读 · 0 评论 -
12.transform以及实时黑名单过滤案例实战
transform以及实时黑名单过滤案例实战transform操作,应用在DStream上时,可以用于执行任意的RDD到RDD的转换操作。它可以用于实现,DStream API中所没有提供的操作。比如说,DStream API中,并没有提供将一个DStream中的每个batch,与一个特定的RDD进行join的操作。但是我们自己就可以使用transform操作来实现该功能。DStream.原创 2017-11-18 21:45:38 · 1494 阅读 · 3 评论 -
11.updateStateByKey以及基于缓存的实时wordcount程序
updateStateByKeyupdateStateByKey操作,可以让我们为每个key维护一份state,并持续不断的更新该state。1、首先,要定义一个state,可以是任意的数据类型;2、其次,要定义state更新函数——指定一个函数如何使用之前的state和新值来更新state。对于每个batch,Spark都会为每个之前已经存在的key去应用一次state更新函数,原创 2017-11-18 21:40:47 · 1360 阅读 · 0 评论