spark

spark-submit部署应用的相关参数详解

随声附和 提交于 2020-02-28 00:17:19
a.[--master]:表示要连接的集群管理器   spark://host:port:连接到指定端口的Spark独立集群上。默认情况下Spark 独立主节点使用7077端口   mesos://host:port:连接到指定端口的Mesos 集群上。默认情况下Mesos 主节点监听5050端口   yarn :连接到一个YARN 集群。当在YARN上运行时,需要设置环境变量HADOOP_CONF_DIR指向Hadoop 配置目录,以获取集群信息   local:运行本地模式,使用单核   local[N]:运行本地模式,使用N个核心   local[*]:运行本地模式,使用尽可能多的核心 b.[--deploy-mode]:选择driver驱动管理器在“client”和“cluster”运行;   在集群管理器上,如果是“client”提交,那么驱动管理器在client运行;   如果是“cluster”提交,那么驱动管理器在集群上运行;   如:在spark on yarn模式下:     在slave1节点上执行:{spark-submit --master yarn --deploy-mode client},那么spark-submit守护进程在slave1上     在slave1节点上执行:{spark-submit --master yarn --deploy

Spark源码阅读的正确打开方式

不羁的心 提交于 2020-02-27 13:35:44
Spark发展至今,应该说已经非常成熟了。是大数据计算领域不得不学习的框架。尤其是Spark在稳定性和社区发展的成熟度方面,吊打其他的大数据处理框架。 Spark至今只经历过1.x、2.x和3.x三个大版本的变化,在核心实现上,我们在Github能看到的最早的实现是0.5版本,这个版本只有1万多行代码,就把Spark的核心功能实现了。 当然我们不可能从这么古老的版本看,假如你接触过Spark,现在准备看源码,那么我建议从2.x版本中选取一个,最好是2.3或者2.4。但是经过如此多的迭代,Spark的代码量已经暴增了几倍。所以你需要抓住重点,本文就是想跟大家说说,我们该怎么看,看哪些东西。 基础概念篇 首先假如你是第一次接触Spark,那么你需要对Spark的设计思想有所了解,知道Spark用了哪些抽象,Spark在提出RDD的时候是基于什么样的考虑。 在这里给大家推荐几篇论文如下: 第一篇: 这个不多说,直接给出一个链接,这篇文章不长,很快能看完。 弹性分布式数据集:一种为内存化集群计算设计的容错抽象 https://fasionchan.com/blog/2017/10/19/yi-wen-tan-xing-fen-bu-shi-shu-ju-ji-yi-zhong-wei-nei-cun-hua-ji-qun-ji-suan-she-ji-de-rong-cuo-mo-xing

spark入门(1)

谁说胖子不能爱 提交于 2020-02-27 12:12:24
1. RDD 1.1 RDD的定义 RDD:resilient distributed dataset 弹性分布式数据集 dataset:数据封装到集合中 distributed:分布式存储数据 resilient:数据优先存储在内存中,如果内存空间不足,再溢写到磁盘中 1.2 RDD的特点 分布式存储:数据 分区 内存优先:内存 > 磁盘 数据可靠性: 血统 机制 2 编程细节 2.2 编程规范 类名:大写字母开头 字段名/成员名:小写字母开头 2.3 快捷键 格式化代码:ctrl+alt+L 自动补齐代码:ctrl+J 注释代码:ctrl+/ 2.1 构建工程步骤 新建空项目(New-Project) 新建模块(New-Module-Maven) 配置pom.xml文件 在已有内容的中间中插入以下内容,其中关于spark.version和scala.version视情况指定。 <properties> <spark.version>2.4.5</spark.version> <scala.version>2.11</scala.version> </properties> <repositories> <repository> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com

Spark数据处理与特征工程

时光总嘲笑我的痴心妄想 提交于 2020-02-27 10:54:33
sklearn在中小型数据集上,在工业界是在使用的 xgboost、lightgbm在工业界的实用度非常的高 工业界数据体量真的达到上亿或者十亿这样的规模用sklern处理起来是比较吃力的, 可借助于大数据的工具,比如spark来解决 现在可以用spark来做大数据上的数据处理,比如数据工程、监督学习、无监督学习模型的构建,只要计算资源够就OK。【大数据底层做分布式处理】 注意:spark基于RDD形态、DataFrame形态两种形态的工具库,其中基于RDD形态的工具库目前已经暂停维护,所以建议使用DataFrame形态 对连续值处理 binaizer/二值化、按照给定边界离散化、 quantile_discretizer/按分位数、最大最小值幅度缩放、标准化、添加多项式特征 对离散型处理 独热向量编码 对文本型处理 去停用词、Tokenizer、count_vectorizer、TF-IDF权重、n-gram语言模型 高级变化 sql变换、R公式变换 对连续值处理 有的变换器需要fit在transfrom,有的不需要 直接transfrom通常不需要去扫描数据的,比如二值化,只需要设置阈值即可 1.1、binarizer/二值化 #连续值处理 ##二值化 from __future__ import print_function from pyspark.sql import

提交jar作业到spark上运行

空扰寡人 提交于 2020-02-27 10:02:09
1.引入spark包:spark-assembly-1.4.0-hadoop2.6.0,在spark的lib目录下 File-->project structure 2.用IDEA建立一个scala项目,新建一个WordCount的object 3.WordCount代码如下: import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ object WordCount { def main(args: Array[String]) { if (args.length < 1) { System.err.println("Usage: <file>") System.exit(1) } val conf = new SparkConf() val sc = new SparkContext(conf) val line = sc.textFile(args(0)) line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println) sc.stop() } } 4.打包jar包:IDEA-->Project Structure--

Spark RDD

*爱你&永不变心* 提交于 2020-02-27 05:06:35
对 RDD 的学习进行一下整理 RDD: 基于内存的集群计算容错抽象 分布式内存抽象的概念 --- 弹性分布式数据集( RDD ),它具备 MapReduce 等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算。 为了有效地实现容错, RDD 提供了一种高度受限的共享内存,即 RDD 是只读的,并且只能通过其他 RDD 上的批量操作来创建。 RDD 基于工作集的应用,同时具有数据流模型的特点:自动容错、位置感知调度和可伸缩性。允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,提升了查询速度 RDD 提供了一种高度受限的共享内存模型,即 RDD 是只读的记录分区的集合,只能通过在其他 RDD 执行确定的转换操作 ( 如 map 、 join 和 group by) 而创建,然而这些限制使得实现容错的开销很低。与分布式共享内存系统需要付出高昂代价的检查点和回滚机制不同, RDD 通过 Lineage 来重建丢失的分区:一个 RDD 中包含了如何从其他 RDD 衍生所必需的相关信息,从而不需要检查点操作就可以重构丢失的数据分区。 编程模型 a) 在 Spark 中, RDD 被表示为对象,通过这些对象上的方法 ( 或函数 ) 调用转换。 b) 定义 RDD 后,可在动作中使用 RDD 。动作是向应用程序返回值,或向存储系统导出数据的那些操作

如果你在准备面试,就好好看看这130道题

我的未来我决定 提交于 2020-02-27 05:01:02
这些题目是一个知识星球的球友发给我的,其中有几个题帮着解答了一下。希望对大家有帮助。 如果你不知道如何准备面试,那么看看这个。 年假马上来临,我相信有不少读者都在准备或者考虑面试,无论如何不妨收藏一下。 如果你某个题目不知道答案,那么就去搜一下,如果搜不到,在公众号回复【加群】,可以加到群里寻求小伙伴们的求助。或者扫最下面的二维码加小助手好友并留言,有时间后我会回复你。 顺便多提一句, 计算机基础和语言基础 请大家务必重视,如果你不是计算机专业,那么这些东西都要平时多看看。 这130个题暂时没有答案,很多题目《大数据技术与架构》都发过文章讲解过,需要你自己去准备,去看,去思考,真正理解。不要妄想别人喂给你,毕竟我们是人不是鸭子。 1、HashMap 和 Hashtable 区别 2、Java 垃圾回收机制和生命周期 3、怎么解决 Kafka 数据丢失的问题 4、zookeeper 是如何保证数据一致性的 5、hadoop 和 spark 在处理数据时,处理出现内存溢出的方法有哪些? 6、java 实现快速排序 7、设计微信群发红包数据库表结构(包含表名称、字段名称、类型) 8、如何选型:业务场景、性能要求、维护和扩展性、成本、开源活跃度 9、Spark如何调优 10、Flink和spark的通信框架有什么异同 11、Java的代理 12、Java的内存溢出和内存泄漏 13

Spark 跑 java 示例代码

孤街浪徒 提交于 2020-02-27 03:23:09
一、下载示例代码: git clone https://github.com/melphi/spark-examples.git 从示例代码中可以看到 pox中引入了 Spark开发所需要的依赖。 二、把代码导入 IDE IDE应该会识别这是 Maven项目,在IDE中打包: 打包后,在项目根目录中,target文件夹内会生成文件 first-example-1.0-SNAPSHOT.jar 运行该程序 命令为: bin/spark-submit --class org.sparkexample.WordCount --master local[2] D:\first-example\target\spark-examples-1.0-SNAPSHOT.jar F:\test\input.txt F:\NJU\test\output 具体语法请见: http://spark.apache.org/docs/latest/submitting-applications.html 查看结果 F:\test\output 中能看到词频统计的结果 本文来源: https://github.com/melphi/spark-examples , 谢谢 来源: https://www.cnblogs.com/zztt/p/4999525.html

Spark自定义分区器步骤以及Spark自定义分区器的应用

房东的猫 提交于 2020-02-27 00:30:34
Spark自定义分区器 要实现自定义的分区器,你需要继承 org.apache.spark.Partitioner, 并且需要实现下面的方法: 1.numPartitions 该方法需要返回分区数, 必须要大于0. 2.getPartition(key) 返回指定键的分区编号(0到numPartitions-1)。 3.equals Java 判断相等性的标准方法。这个方法的实现非常重要,Spark 需要用这个方法来检查你的分区器对象是否和其他分区器实例相同,这样 Spark 才可以判断两个 RDD 的分区方式是否相同 4.hashCode 如果你覆写了equals, 则也应该覆写这个方法. 以下是通过自定义分区器实现自定义分区规则 import org.apache.spark.rdd.RDD import org.apache.spark. { Partitioner, SparkConf, SparkContext } /* 使用自定义的 Partitioner 是很容易的 :只要把它传给 partitionBy ( ) 方法即可。 Spark 中有许多依赖于数据混洗的方法,比如 join ( ) 和 groupByKey ( ) , 它们也可以接收一个可选的 Partitioner 对象来控制输出数据的分区方式。 */ package com.bigdata.spark

Spark面试题

扶醉桌前 提交于 2020-02-26 23:12:53
RDD怎么理解? RDD 是 Spark 的灵魂,也称为弹性分布式数据集。一个 RDD 代表一个可以被分区的只读数据集。RDD 内部可以有许多分区(partitions),每个分区又拥有大量的记录(records)。Rdd的五个特征: 1. dependencies: 建立 RDD 的依赖关系,主要 RDD 之间是宽窄依赖的关系,具有窄依赖关系的 RDD 可以在同一个 stage 中进行计算。 2. partition: 一个 RDD 会有若干个分区,分区的大小决定了对这个 RDD 计算的粒度,每个 RDD 的分区的计算都在一个单独的任务中进行。 3. preferedlocations: 按照“移动数据不如移动计算”原则,在 Spark 进行任务调度的时候,优先将任务分配到数据块存储的位置。 4. compute: Spark 中的计算都是以分区为基本单位的,compute 函数只是对迭代器进行复合,并不保存单次计算的结果。 5. partitioner: 只存在于(K,V)类型的 RDD 中,非(K,V)类型的 partitioner 的值就是 None。 RDD 的算子主要分成2类,action 和 transformation。这里的算子概念,可以理解成就是对数据集的变换。action 会触发真正的作业提交,而 transformation 算子是不会立即触发作业提交的