rdd

pyspark学习笔记

匿名 (未验证) 提交于 2019-12-02 23:49:02
通过spark指定最终存储文件的个数,以解决例如小文件的问题,比hive方便,直观 有两种方法,repartition,coalesce,并且,这两个方法针对RDD和DataFrame都有 repartition和coalesce的区别: repartition(numPartitions:Int):RDD[T] coalesce(numPartitions:Int,shuffle:Boolean=false):RDD[T] 他们两个都是RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为true的简易实现,(假设RDD有N个分区,需要重新划分成M个分区) N<M。一般情况下N个分区有数据分布不均匀的状况,利用HashPartitioner函数将数据重新分区为M个,这时需要将shuffle设置为true。 如果N>M并且N和M相差不多,(假如N是1000,M是100)那么就可以将N个分区中的若干个分区合并成一个新的分区,最终合并为M个分区,这时可以将shuff设置为false,在shuffle为false的情况下,如果M>N时,coalesce为无效的,不进行shuffle过程,父RDD和子RDD之间是窄依赖关系。 如果N>M并且两者相差悬殊,这时如果将shuffle设置为false,父子RDD是窄依赖关系,他们同处在一个stage中

DStream转为DF的两种方式(突破map时元组22的限制)

匿名 (未验证) 提交于 2019-12-02 23:47:01
在进行Spark Streaming的开发时,我们常常需要将DStream转为DataFrame来进行进一步的处理, 共有两种方式,方式一: val spark = SparkSession.builder() .appName("Test") .getOrCreate() import spark.implicits._ dStream.foreachRDD{ rdd => val df = rdd.map(_.split(" ")) .map(t => (t(1),t(2),t(3))) .toDF("col1","col2","col3") // 业务逻辑 } 利用map算子和tuple来完成,一般的场景下采用这种方式即可。 但是有的时候我们会遇到列数大于22的情况,这个时候会受到scala的tuple数不能超过22的影响。这时可以采用方式二: val spark = SparkSession.builder() .appName("Test") .getOrCreate() dStream.foreachRDD{ rdd => val res:RDD[Row] = rdd.map{ row => val buffer = ArrayBuffer.empty[Any] val fields: Array[String] = row.split("\\|~\\|")

SparkStreaming

匿名 (未验证) 提交于 2019-12-02 23:45:01
1、RDD基础   RDD.scala源码写到RDD的5个属性。driver生成RDD 分发到个executor,RDD可理解为操作描述,除sc.parallelize()生成的RDD包含数据外,一般RDD不包含具体数据,只存储要读取的文件位置,DAG等。 KafkaUtils.createDirectStream生成KafkaRDD,分区与topics分区数对应。 基于receiver的方式生成blockRDD,默认200ms取一次数据保存在block,由blockmanager管理,分区数与block数有关,与kafka分区数无关,offset由zookeeper管理。 处理逻辑写在foreachRDD中,转变为sparkcore编程,便于发生故障时,做数据校验二次处理。 * Internally, each RDD is characterized by five main properties: * - A list of partitions * - A function for computing each split * - A list of dependencies on other RDDs * - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash

Spark 核心API

匿名 (未验证) 提交于 2019-12-02 23:43:01
1.SparkConf Spark配置对象,设置各种参数,使用kv类型。 2.SparkContext spark主要入口点,代表到spark集群的连接,可以创建 rdd、累加器和广播变量。 每个JVM中只能有一个SparkContext,启动新的SparkContext必须stop的原来的。 val rdd1 = sc.textFile() 3.RDD rdd有依赖列表. 弹性分布式数据库,是spark的基本抽象,表示为不可变的、分区化的集合,可用于并行计算。 该类包含基本操作,map、filter、persist。 对于kv类型的rdd,方法封装在PairRDDFunction类中。 轻量的集合,里面没有数据。 内部有5大属性: 1.分区列表 2.计算每个切片的函数 3.到其他RDD的依赖列表 4.(可选)针对kv类型RDD的分区类 5.(可选)计算每个的首选的位置列表。 RDD常见操作 ------------------ rdd都是延迟计算的,只有调用action方法时,才会触发job的提交。 1.变换 只要返回新的RDD就是transform。 map filter flatMap mapPartitons //对每个分区进行变换处理 sample union distinct intersection groupByKey //没有combine过程,可以改变v类型

【Spark】Spark基本操作

匿名 (未验证) 提交于 2019-12-02 23:42:01
前言 根据已有RDD创建新的RDD数据集build (1)map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集。 (2)filter(func) :对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD。 (3)flatMap(func):和map很像,但是flatMap生成的是多个结果。 (4)mapPartitions(func):和map很像,但是map是每个element,而mapPartitions是每个partition。 (5)mapPartitionsWithSplit(func):和mapPartitions很像,但是func作用的是其中一个split上,所以func中应该有index。 (6)sample(withReplacement,faction,seed):抽样。 (7)union(otherDataset):返回一个新的dataset,包含源dataset和给定dataset的元素的集合。 (8)distinct([numTasks]):返回一个新的dataset,这个dataset含有的是源dataset中的distinct的element。 (9)groupByKey(numTasks):返回(K

Spark 学习 (十一) Spark Streaming详解

匿名 (未验证) 提交于 2019-12-02 23:41:02
一,简介   1.3 Storm和Spark Streaming比较 二,运行原理   2.1 Streaming架构   2.2 容错,持久化和性能调优 三,编程模型   3.2 DStream的输入源   3.3 DStream的操作    正文 一,简介    是一个基于Spark Core之上的实时计算框架,可以从很多数据源消费数据并对数据进行处理 Spark核心 API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据,包括 Kafk、 Flume、 Twitter、 ZeroMQ、 TCP sockets,从数据源获取数据之后,可以使用诸如 map、 reduce、 join和 window等高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统,数据库和现场仪表盘。在“ One Stack rule them all”的基础上,还可以使用 Spark的其他子框架,如集群学习、图计算等,对流数据进行处理。    Spark Streaming处理的数据流图:       Spark的各个子框架,都是基于核心 Spark的, Spark Streaming在内部的处理机制是,接收实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后通过 Spark Engine处理这些批数据,最终得到处理后的一批批结果数据。  

Spark SQL 入门 DF、DS

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/likaiasddsa/article/details/90475017 Spark SQL 入门 SparkSession Spark中所有功能的入口点都是SparkSession类。要创建基本的SparkSession,只需使用SparkSession.builder(): import org.apache.spark.sql.SparkSession val spark = SparkSession .builder() .appName(“Spark SQL basic example”) .config(“spark.some.config.option”, “some-value”) .getOrCreate() // 导入RDD到DF的隐式转换 import spark.implicits._ Dataset Dataset 是分布式数据集合。提供了RDD的优势(强类型,使用强大的lambda函数的能力)和Spark SQL优化执行引擎的优点。 DataFrame DataFrame是一个组织成命名列的数据集。在Scala API中,DataFrame它只是一个类型别名Dataset[Row]。 DataFrame可以从多种来源构建,例如:结构化数据文件,Hive中的表

scala Array[String]תRDD[String]

匿名 (未验证) 提交于 2019-12-02 23:34:01
本来想统计一下每个单词的个数并进行排序,但是类型是所以查了一下相关材料有两种方法: 1)把原有的数据进行数据类型转化Array[String]转RDD[String] val sc=spark.sparkContext.parallelize(Array[String]数据) sc就是RDD[String]类型,之后就可以调用RDD相关方法 2)直接map统计完单词个数之后,调用sortBy()方法 val map=data.flatMap(line=>line.split(",")).map(word=>(word,1)) val result=map.sortBy(arr=>arr._2).take(1) print(result) 文章来源: https://blog.csdn.net/qq_35307209/article/details/90378984

Python3实战Spark大数据分析及调度 (网盘分享)

匿名 (未验证) 提交于 2019-12-02 22:51:30
Python3实战Spark大数据分析及调度 搜索QQ号直接加群获取其它学习资料:715301384 部分课程截图: 链接:https://pan.baidu.com/s/12VDmdhN4hr7ypdKTJvvgKg 提取码:cv9z PS:免费分享,若点击链接无法获取到资料,若如若链接失效请加群 其它 资源在群里,私聊管理员即可免费领取;群――715301384,点击加群 ,或扫描二维码 第1章 课程介绍 课程介绍 1-1 PySpark导学 试看 1-2 OOTB环境演示 第2章 实战环境搭建 工欲善其事必先利其器,本章讲述JDK、Scala、Hadoop、Maven、Python3以及Spark源码编译及部署 2-1 -课程目录 2-2 -Java环境搭建 2-3 -Scala环境搭建 2-4 -Hadoop环境搭建 2-5 -Maven环境搭建 2-6 -Python3环境部署 2-7 -Spark源码编译及部署 第3章 Spark Core核心RDD 本章详细讲解RDD是什么以及特性(面试常考)、Spark中两个核心类SparkContext和SparkConf、pyspark启动脚本分析、RDD的创建方式以及如何使用IDE开发Python Spark应用程序并提交到服务器上运行 3-1 -课程目录 3-2 -RDD是什么 3-3 -通过电影描述集群的强大之处 3-4

Spark总结

旧城冷巷雨未停 提交于 2019-12-02 22:11:57
Spark简介 spark 可以很容易和yarn结合,直接调用HDFS、Hbase上面的数据,和hadoop结合。配置很容易。 spark发展迅猛,框架比hadoop更加灵活实用。减少了延时处理,提高性能效率实用灵活性。也可以与hadoop切实相互结合。 spark核心部分分为RDD。Spark SQL、Spark Streaming、MLlib、GraphX、Spark R等核心组件解决了很多的大数据问题,其完美的框架日受欢迎。其相应的生态环境包括zepplin等可视化方面,正日益壮大。大型公司争相实用spark来代替原有hadoop上相应的功能模块。Spark读写过程不像hadoop溢出写入磁盘,都是基于内存,因此速度很快。另外DAG作业调度系统的宽窄依赖让Spark速度提高。 Spark核心组成 1、RDD 是弹性分布式数据集,完全弹性的,如果数据丢失一部分还可以重建。有自动容错、位置感知调度和可伸缩性,通过数据检查点和记录数据更新金象容错性检查。通过SparkContext.textFile()加载文件变成RDD,然后通过transformation构建新的RDD,通过action将RDD存储到外部系统。 RDD使用延迟加载,也就是懒加载,只有当用到的时候才加载数据。如果加载存储所有的中间过程会浪费空间。因此要延迟加载。一旦spark看到整个变换链,他可以计算仅需的结果数据