Spark
FangStar8Jeff
这个作者很懒,什么都没留下…
展开
-
SparkRDD 读写HBase
首先导入POM依赖<?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:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache原创 2021-04-23 16:48:36 · 311 阅读 · 0 评论 -
Spark温故而知新
重要角色Driver(驱动器)Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext...原创 2020-03-27 14:58:12 · 144 阅读 · 0 评论 -
RDD缓存与RDD序列化缓存的大小对比
使用RDD进行持久化当你在Spark代码中多次对一个RDD做了算子操作后,恭喜,你已经实现Spark作业第一步的优化了,也就是尽可能复用RDD。此时就该在这个基础之上,进行第二步优化了,也就是要保证对一个RDD执行多次算子操作时,这个RDD本身仅仅被计算一次。Spark中对于一个RDD执行多次算子的默认原理是这样的:每次你对一个RDD执行一个算子操作时,都会重新从源头处计算一遍,计算出那个...原创 2019-05-18 16:47:23 · 618 阅读 · 0 评论 -
Spark读写Hive
有了Spark以后,我们可以在Spark-shell的界面以及 Spark-sql的界面进行我们Hive的读写,我们只需要将Hive的hive-site.xml导入到spark/conf下即可,因为Hive的元数据是储存在MySQL上的,所以我们只需要确保MySQL关联的HIVE数据库是可通的即可,无需安装Hive来进行校验。hive-site.xml需要的内容<?xml v...原创 2019-05-29 14:30:48 · 226 阅读 · 0 评论 -
RDD与DataFrame的两种相互转换
http://spark.apache.org/docs/latest/sql-getting-started.html#interoperating-with-rddsSpark SQL的Scala接口支持自动将包含RDD的案例类转换为DataFrame。 case类定义表的模式。 使用反射读取case类的参数名称,并成为列的名称。 案例类也可以嵌套或包含复杂类型,如Seqs或Arra...转载 2019-05-29 15:54:10 · 644 阅读 · 0 评论 -
spark处理小文件问题
生产上的小文件问题很多,我们需要先根据集群的资源,测试出一个task最大能运行的size,然后根据这个参数,做coalesce()的小文件合并操作。 一般默认我们的生产集群给的size是1G。以下代码即可测试出最小的coalesce数。import java.net.URIimport org.apache.hadoop.conf.Configurationimport o...原创 2019-06-07 20:21:14 · 2302 阅读 · 0 评论 -
Struct Streaming的简介
Struct Streaming是底层基于SparkSQL引擎的、可扩容和容错的流处理引擎。允许我们利用处理静态数据的方式来处理我们的流计算。随着流数据的不断流入,Sparksql引擎会增量的连续不断的处理并且更新结果。可以使用DataSet/DataFrame的API进行 streaming aggregations, event-time windows, stream-to-bat...原创 2019-06-20 10:47:38 · 1557 阅读 · 0 评论 -
sparkSQL外部数据源读JDBC
def getDataFrameFromDb(spark: SparkSession, jdbcUrl: String, userName: String, password: String, queryString: String,driverClass: String="com.mysql.jdbc.Driver"): DataFrame = { spark.read.form...原创 2019-07-31 10:10:58 · 145 阅读 · 0 评论 -
在Windows10,IDEA下进行pyspark编程
python3.7IDEA 2019.1spark2.4.3先在本地Windows下安装好Python(记得安装时候勾选上将配置环境变量)https://baijiahao.baidu.com/s?id=1606573927720991570&wfr=spider&for=pccmd里输入 python -V查看是否安装和配置成功下载好...原创 2019-08-14 16:12:15 · 330 阅读 · 0 评论 -
2019最新spark面试题,看了它,你还怕找不到工作吗?
【导读】本篇文章为大家带来spark面试指南,文内会有两种题型,问答题和代码题,题目大部分来自于网络上,有小部分是来自于工作中的总结,每个题目会给出一个参考答案。为什么考察Spark?Spark作为大数据组件中的执行引擎,具备以下优势特性。 高效性。内存计算下,Spark 比 MapReduce 快100倍。Spark使用最先进的DAG调度程序、查询优化程序和...转载 2019-09-03 09:14:20 · 420 阅读 · 0 评论 -
Spark的UDF函数简单使用
类似Hive,spark也可以进行UDF函数注册与使用,下面就简单的介绍一下数据源Jeff 音乐,电影,编程celestia Jeff,看书Star 踢球现在我们注册一个函数,它可以之间统计出Name对应的爱好数量package com.jeff.UDFimport org.apache.spark.sql.SparkSessionobject CountColum...原创 2019-05-23 10:35:27 · 1855 阅读 · 0 评论 -
Spark的监控系统
常用的Spark监控系统有,Web UI和Spark的History-Server一,web界面1,界面的基本介绍每一个Spark应用程序都会启动一个spark ui,默认端口是4040端口,用于展示对应用程序有用的信息。包括以下信息:1),stages和tasks列表。2),RDD大小的总概和内存使用。3),运行环境信息。4),运行的Executors状态。你可以...原创 2019-05-13 10:39:45 · 594 阅读 · 0 评论 -
Spark的宽窄依赖
RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。窄依赖父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的。不会有shuffle的产生。宽依赖父RDD与子RDD partition之间的关系是一对多。会有shuffle的产生。宽...原创 2019-04-10 17:35:49 · 296 阅读 · 0 评论 -
SparkCore中的常见Transformations算子和Action算子
Transformations转换算子 : Transformations类算子是一类算子(函数)叫做转换算子,如map,flatMap,reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。 filter 过滤符合条件的记录数,true保留,false过滤掉。 map 将一个RDD...原创 2019-04-10 17:57:55 · 361 阅读 · 0 评论 -
Spark的控制算子
控制算子:控制算子有三种,cache,persist,checkpoint,以上算子都可以将RDD持久化,持久化的单位是partition。cache和persist都是懒执行的。必须有一个action类算子触发执行。checkpoint算子不仅能将RDD持久化到磁盘,还能切断RDD之间的依赖关系。cache默认将RDD的数据持久化到内存中。cache是懒执行。注意:chche...原创 2019-04-10 18:00:00 · 210 阅读 · 0 评论 -
RDD的深入讲解
Resilient distributed datasets(弹性分布式数据集,简写RDD)弹性:针对计算来讲,在分布式计算的时候,有容错机制,丢失了可以恢复分布式:代码可以在多个节点上执行数据集:用来存储数据的一个封装集通过RDD的字面理解,我们可以延申至RDD的五大特性1)A list of partitions :RDD数据集是由一个又一个的分区组成的比...原创 2019-05-02 17:17:08 · 284 阅读 · 0 评论 -
map与flatMap的区别
spark的转换算子中map和flatMap都十分常见,要了解清楚它们的区别,我们必须弄懂每执行一次的数据结构是什么。这里我们先准备一组数据hello spark hadoopjeff ruoze spark hi spark hello启动spark之后,读取这个文件将一行行按照制表符进行分割对分割好的RDD进行map操...原创 2019-05-05 15:20:53 · 1039 阅读 · 0 评论 -
spark的词频统计之后作升序或者降序排序
scala> b.map((_,1)).reduceByKey(_+_).collectres26: Array[(String, Int)] = Array((hive,1), (spark,3), (jeff,2), (ruoze,1), (hadoop,1), (hi,1))现有这样的一个已经做好wordcount的RDD,对其进行排序升序:scala>...原创 2019-05-05 15:30:27 · 1658 阅读 · 1 评论 -
Spark之takeSample执行算子
takeSample返回一个Array[T];该方法仅在预期结果数组很小的情况下使用,因为所有数据都被加载到driver的内存中。源码def takeSample(withReplacement: Boolean,num: Int,seed: Long = Utils.random.nextLong): Array[T] = withScope {...}...原创 2019-05-05 16:21:26 · 622 阅读 · 0 评论 -
Spark之takeOrderd算子
takeOrdered:def takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]takeOrdered函数与take类似,它返回结果的顺序与take函数相反。scala> val a = sc.parallelize(Array(2,5,6,8,9))a: org.apache.spark.rdd....原创 2019-05-05 16:27:46 · 819 阅读 · 3 评论 -
Idea开发Spark程序,导入包Hadoop-client报错
因为默认的CDH仓库我们是访问不到的,所以需要再pom.xml中添加一个<repositories> <repository> <id>cloudera</id> <name>cloudera</name> <url>https://repository.cloudera...原创 2019-05-05 17:01:22 · 663 阅读 · 0 评论 -
Yarn的资源申请(粗粒度和细粒度)
粗粒度资源申请(Spark)在Application执行之前,将所有的资源申请完毕,当资源申请成功后,才会进行任务的调度,当所有的task执行完成后,才会释放这部分资源。优点:在Application执行之前,所有的资源都申请完毕,每一个task直接使用资源就可以了,不需要task在执行前自己去申请资源,task启动就快了,task执行快了,stage执行就快了,job就快了,applic...原创 2019-04-04 18:34:09 · 1003 阅读 · 1 评论