
bigdata_Spark
乔治大哥
脚踏实地,仰望星空。
展开
-
Spark调优——你工作中的首选
在利用Spark处理数据时,如果数据量不大,那么Spark的默认配置基本就能满足实际的业务场景。但是当数据量大的时候,就需要做一定的参数配置调整和优化,以保证业务的安全、稳定的运行。并且在实际优化中,要考虑不同的场景,采取不同的优化策略。1.合理设置微批处理时间在SparkSreaming流式处理中,合理的设置微批处理时间(batchDuration)是非常有必要的。如果batchDu...原创 2020-03-19 20:34:21 · 477 阅读 · 0 评论 -
调一调Hive on Spark参数,毫不夸张的说,使其性能达到最大化!
前言Hive on Spark是指使用Spark替代传统MapReduce作为Hive的执行引擎,在HIVE-7292提出。Hive on Spark的效率比on MR要高不少,但是也需要合理调整参数才能最大化性能,本文简单列举一些调优项。为了符合实际情况,Spark也采用on YARN部署方式来说明。Driver参数spark.driver.cores该参数表示每个Ex...原创 2020-03-18 21:36:12 · 3853 阅读 · 1 评论 -
Spark的实战题目——寻找5亿次访问中,访问次数最多的人
场景描述:这是一个Spark的实战题目,也是在面试中经常出现的一类题目。问题描述对于一个大型网站,用户访问量尝尝高达数十亿。对于数十亿是一个什么样的概念,我们这里可以简单的计算一下。对于一个用户,单次访问,我们通常会记录下哪些数据呢?1、用户的id2、用户访问的时间3、用户逗留的时间4、用户执行的操作5、用户的其余数据(比如IP等等)我们单单从用户id来说,比如10011802...转载 2020-02-14 17:22:28 · 1118 阅读 · 0 评论 -
Spark 数据倾斜及其解决方案
本文从数据倾斜的危害、现象、原因等方面,由浅入深阐述Spark数据倾斜及其解决方案。一、什么是数据倾斜对 Spark/Hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要120分钟,当机器数量增加到3台时,理想的耗时为120 ...原创 2019-12-25 21:05:12 · 693 阅读 · 0 评论 -
SparkSQL读取hive中的数据,行转列的两种方式【行转列专用函数,UDAF】
先给数据:vi employees1,George,nan2,honey,nv3,georgedage,nan4,kangkang,nv上传数据:hdfs dfs -mkdir /secondhdfs dfs -put employees /second/创表:create external table employees(emp_no int,emp_name...原创 2019-12-09 15:22:05 · 801 阅读 · 0 评论 -
如何将rdd导入数据库中【简单实例】
package com.henuimport java.sql.DriverManagerimport org.apache.spark.{SparkConf, SparkContext}//将rdd导入数据库中object ToMysql { def main(args: Array[String]): Unit = { val conf = new SparkConf...原创 2019-12-09 11:18:29 · 480 阅读 · 0 评论 -
高大上的介绍实时流式计算!
实时流式计算,也就是RealTime,Streaming,Analyse,在不同的领域有不同的定义,这里我们说的是大数据领域的实时流式计算。实时流式计算,或者是实时计算,流式计算,在大数据领域都是差不多的概念。那么,到底什么是实时流式计算呢?谷歌大神Tyler Akidau在《the-world-beyond-batch-streaming-101》一文中提到过实时流式计算的三个特征:...原创 2019-11-25 20:36:55 · 486 阅读 · 0 评论 -
在linux上运行scala的jar包
pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati...原创 2019-11-25 20:32:44 · 2158 阅读 · 0 评论 -
用 Flink 取代 Spark Streaming,知乎实时数仓架构演进【推荐】
“数据智能” (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务。从智能商业的角度来讲,数据的结果代表了用户的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。本文主要讲述知乎的实时数仓实践以及架构的...原创 2019-11-21 21:45:47 · 332 阅读 · 0 评论 -
Spark对Kafka两种连接方式的对比——Receiver和Direct
在知乎 Flink 取代 Spark Streaming 的实战之路中,提到因此下面对两种方式进行详细说明一下。Receiver方式Receiver:接收器模式是使用Kafka高级Consumer API实现的。与所有接收器一样,从Kafka通过Receiver接收的数据存储在Spark Executor的内存中,然后由Spark Streaming启动的job来处理数据。然而默认配置...原创 2019-11-21 19:00:03 · 1273 阅读 · 0 评论 -
谈一谈RDD 持久化的三个算子:cache、persist、checkpoint
这段伪代码的瑕疵:lines = sc.textFile(“hdfs://...”)errors = lines.filter(_.startsWith(“ERROR”))mysql_errors = errors.filter(_.contain(“MySQL”)).counthttp_errors = errors.filter(_.contain(“Http”)).count...原创 2019-11-21 17:10:14 · 868 阅读 · 0 评论 -
Spark _31 _简单使用Kafka+sparkStreaming【小例子】
scalaAPI:package com.sparkStreamingimport org.apache.kafka.common.serialization.StringDeserializerimport org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}...原创 2019-11-21 16:32:48 · 307 阅读 · 0 评论 -
Spark读取文本文件并转换为DataFrame
数据:scalaapi:package com.lianxiimport org.apache.spark.SparkContextimport org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}import org.apache.spark.sql.{DataFrame...原创 2019-11-20 16:08:56 · 3485 阅读 · 0 评论 -
map和mapValues的纠纷
mapmapValues简单来说:map(func)返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成mapValues针对于(K,V)形式的类型只对V进行操作简单举例:其实从返回类型就可以看出来:package suanziimport org.apache.spark.{SparkConf, SparkCont...原创 2019-11-19 22:08:34 · 854 阅读 · 0 评论 -
Spark任务提交后是如何完成提交过程的?源码解析!
Spark任务提交后是如何完成提交过程的?源码解析!我们熟知的提交命令:sparksubmitvclassxxxmasterspark://xxx7077....然后我们visparksubmit.看到他实际上启动的是SparkSubmit的类。然后我们来到源码中找到SparkSubmit,进行分析。刚进入类中,你就会发现:我们说...原创 2019-11-19 18:40:33 · 349 阅读 · 0 评论 -
浅析SparkRPC源码(spark2.11)
Spark的RPC一步一步走下去:RpcAddressRpcEndPointRef当我们需要向一个具体的RpcEndpoint发送消息时,一般我们需要获取到该RpcEndpoint的引用,然后通过该应用发送消息。部分方法:RpcEnvRpcEnv的部分方法:RpcEndpoint正如他所说我们前去看他的生命周期:那么RpcE...原创 2019-11-19 16:34:43 · 252 阅读 · 0 评论 -
简单的combineByKey算子【看完就懂系列】
代码先行:val conf = new SparkConf() .setMaster("local") .setAppName("CbkDemo") val sc = new SparkContext(conf) sc.setLogLevel("error") val rdd: RDD[(String, Double)] = sc.para...原创 2019-11-18 20:41:18 · 875 阅读 · 0 评论 -
小练习——过滤掉出现次数最多的数据
数据源:hello georgehello georgehello georgehello georgehello georgehello georgeGeorge loveGeorge loveGeorge lovegeorge kangkangkangkang kangkang代码:package suanziimport org.apache.spa...原创 2019-11-18 15:15:12 · 292 阅读 · 0 评论 -
与 zip 有关的 3 个算子zip、zipWithIndex、zipWithUniqueId
package suanziimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object ZipDemo { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName...原创 2019-11-18 14:57:04 · 438 阅读 · 0 评论 -
设置分区的三种方法coalesce、repartition、partitionBy
coalesce[ˌkəʊəˈles]:改变 RDD 的分区数/** false:不产生 shuffle* true:产生 shuffle* 如果重分区的数量大于原来的分区数量,必须设置为 true,否则分区数不变* 增加分区会把原来的分区中的数据随机分配给设置的分区个数*/val coalesceRdd = result.coalesce(6,true)val results...原创 2019-11-18 14:53:29 · 1520 阅读 · 0 评论 -
map、mapPartitions、mapPartitionsWithIndex区别在哪里?
map /** * Return a new RDD by applying a function to all elements of this RDD.通过对这个RDD的所有元素应用一个函数来返回一个新的RDD。 */ def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF =...原创 2019-11-18 13:23:42 · 418 阅读 · 0 评论 -
一个略显复杂的transformation算子_distinct
进入distinct方法中 /** * Return a new RDD containing the distinct elements in this RDD. */ def distinct(numPartitions: Int)(implicit ord: Ordering[T] = null): RDD[T] = withScope { map(x =&...原创 2019-11-17 21:28:13 · 158 阅读 · 0 评论 -
两个TransFormation算子的战斗(groupByKey 和 reduceByKey区别)
groupByKey 和 reduceByKey /** * Group the values for each key in the RDD into a single sequence. Hash-partitions the * resulting RDD with the existing partitioner/parallelism level. The order...原创 2019-11-17 21:16:59 · 458 阅读 · 0 评论 -
Spark没有读取HDFS文件的方法?那textFile是怎么读的?
直入正题吧,ctrl+鼠标点进textFile方法。package org.apache.spark......... /** * Read a text file from HDFS, a local file system (available on all nodes), or any * Hadoop-supported file system URI, and ...原创 2019-11-17 20:58:13 · 946 阅读 · 0 评论 -
Spark _30_SparkStreaming算子操作&Driver HA
SparkStreaming算子操作foreachRDDoutput operation算子,必须对抽取出来的RDD执行action类算子,代码才能执行。import org.apache.spark.rdd.RDDimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import...原创 2019-11-17 18:42:40 · 465 阅读 · 0 评论 -
Spark _28_窗口函数
窗口函数注意:row_number() 开窗函数是按照某个字段分组,然后取另一字段的前几个的值,相当于 分组取topN如果SQL语句里面使用到了开窗函数,那么这个SQL语句必须使用HiveContext来执行,HiveContext默认情况下在本地无法创建。在MySql8之后也增加了开窗函数。窗口函数格式:row_number() over (partitin by XX...原创 2019-11-17 18:27:45 · 328 阅读 · 0 评论 -
Spark _29_SparkStreaming初始
SparkStreaming简介SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, ZeroMQ或者TCP sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map,reduce,join,window 。最终,处理后的数据可以存放在文件系统,数...原创 2019-11-17 12:58:31 · 237 阅读 · 1 评论 -
Spark _27_自定义函数UDF和UDAF
UDF:用户自定义函数。可以自定义类实现UDFX接口。javaAPI:package com.udf;import javafx.scene.chart.PieChart;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api...原创 2019-11-16 21:26:20 · 401 阅读 · 0 评论 -
Spark _26_Spark On Hive的配置
网上的配置大多如下:Spark On Hive的配置在Spark客户端配置Hive On Spark在Spark客户端安装包下spark-1.6.0/conf中创建文件hive-site.xml:配置hive的metastore路径 <configuration> <property> <name>...原创 2019-11-16 11:00:39 · 407 阅读 · 0 评论 -
Spark _25.plus _使用idea读取Hive中的数据加载成DataFrame/DataSet(四)
对Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四)https://georgedage.blog.youkuaiyun.com/article/details/103091542的纠正,没错,就是这么触不及防。忘了接在idea上的local模式:首先:目录结构javaAPI:package com.henu;import org.ap...原创 2019-11-15 21:30:27 · 475 阅读 · 0 评论 -
Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四)
由于Hive不在本地,操作略显麻烦。不过细心一点,分析错误,也还好,如果你搭建的hadoop是HA,需要多注意:这里指出一个错误,如果你报了同类错误,可以参考:https://georgedage.blog.youkuaiyun.com/article/details/103086882读取Hive中的数据加载成DataFrame/DataSetHiveContext是SQLContext的子类,...原创 2019-11-15 20:56:54 · 1253 阅读 · 0 评论 -
Spark _24 _读取JDBC中的数据创建DataFrame/DataSet(MySql为例)(三)
两种方式创建DataSet现在数据库中创建表不能给插入少量数据。javaapi:package SparkSql;import org.apache.spark.SparkConf;import org.apache.spark.SparkContext;import org.apache.spark.api.java.JavaSparkContext;impor...原创 2019-11-15 19:57:34 · 718 阅读 · 1 评论 -
Spark _23 _读取parquet文件创建DataFrame(二)
读取parquet文件创建DataFrame注意:可以将DataFrame存储成parquet文件。保存成parquet文件的方式有两种df.write().mode(SaveMode.Overwrite)format("parquet").save("./sparksql/parquet");df.write().mode(SaveMode.Overwrite).parquet...原创 2019-11-15 19:51:40 · 750 阅读 · 0 评论 -
什么是parquet文件?
Apache Parquet是Hadoop生态系统中任何项目均可使用的列式存储格式,而与选择数据处理框架,数据模型或编程语言无关。parquet的起源:我们创建Parquet是为了使Hadoop生态系统中的任何项目都可以使用压缩的,高效的列式数据表示形式。Parquet是从头开始构建的,考虑了复杂的嵌套数据结构,并使用了Dremel论文中描述的记录粉碎和组装算法。我们相信这种方法...原创 2019-11-15 13:11:22 · 6471 阅读 · 0 评论 -
spark shuffle再补充
shuffle概览一个spark的RDD有一组固定的分区组成,每个分区有一系列的记录组成。对于由窄依赖变换(例如map和filter)返回的RDD,会延续父RDD的分区信息,以pipeline的形式计算。每个对象仅依赖于父RDD中的单个对象。诸如coalesce之类的操作可能导致任务处理多个输入分区,但转换仍然被认为是窄依赖的,因为一个父RDD的分区只会被一个子RDD分区继承。Spa...原创 2019-11-14 21:29:52 · 203 阅读 · 0 评论 -
Spark _22 _创建DataFrame的几种方式(一)
创建DataFrame的几种方式 读取json格式的文件创建DataFrame 注意:json文件中的json数据不能嵌套json格式数据。 DataFrame是一个一个Row类型的RDD,df.rdd()/df.javaRdd()。 可以两种方式读取json格式的文件。 df.show()默认显示前20行数据。 DataFrame原生API可以操作DataFram...原创 2019-11-14 21:22:08 · 465 阅读 · 0 评论 -
Spark _21 _SparkSQL介绍
SharkShark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上,当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式查询应用服务来使用。除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以及UDF函数等,已有的HiveSql可以直接进行迁移至Shark...原创 2019-11-14 20:05:23 · 303 阅读 · 0 评论 -
Spark2.3.0的DataFrame去哪了,DataSet是哪位?
DataSet是可以转换的领域特定对象的强类型集合同时使用函数或关系操作。每个数据集还有一个无类型视图称为“DataFrame”,它是[[Row]]的数据集。DataFrame也可以叫Dataset[Row],每一行的类型是Row,不解析,每一行究竟有哪些字段,各个字段又是什么类型都无从得知,只能用上面提到的getAS方法或者共性中的拿出特定字段而Dataset中,每一行...原创 2019-11-14 18:15:41 · 629 阅读 · 0 评论 -
Spark _20 _Spark_Shuffle调优
SparkShuffle调优配置项如何使用?在代码中,不推荐使用,硬编码。new SparkConf().set(“spark.shuffle.file.buffer”,”64”)在提交spark任务的时候,推荐使用。spark-submit --conf spark.shuffle.file.buffer=64 –conf ….在conf下的spark-default.conf配...原创 2019-11-14 16:42:59 · 216 阅读 · 0 评论 -
Spark _19 _Spark内存管理
在Spark _18 _Shuffle文件寻址https://georgedage.blog.youkuaiyun.com/article/details/103068770中的shffle寻址流程图中有说到shffle聚合内存的概念,本篇就是阐述Spark的内存管理。官网:http://spark.apache.org/docs/2.3.0/configuration.html#memory-manag...原创 2019-11-14 15:57:57 · 216 阅读 · 0 评论