rdd

How to convert an RDD[Row] back to DataFrame [duplicate]

倾然丶 夕夏残阳落幕 提交于 2019-11-28 21:39:26
This question already has an answer here: How to convert rdd object to dataframe in spark 10 answers I've been playing around with converting RDDs to DataFrames and back again. First, I had an RDD of type (Int, Int) called dataPair. Then I created a DataFrame object with column headers using: val dataFrame = dataPair.toDF(header(0), header(1)) Then I converted it from a DataFrame back to an RDD using: val testRDD = dataFrame.rdd which returns an RDD of type org.apache.spark.sql.Row (not (Int, Int)). Then I'd like to convert it back to an RDD using .toDF but I get an error: error: value toDF is

Concatenating datasets of different RDDs in Apache spark using scala

丶灬走出姿态 提交于 2019-11-28 21:06:24
Is there a way to concatenate datasets of two different RDD s in spark? Requirement is - I create two intermediate RDDs using scala which has same column names, need to combine these results of both the RDDs and cache the result for accessing to UI. How do I combine the datasets here? RDDs are of type spark.sql.SchemaRDD maasg I think you are looking for RDD.union val rddPart1 = ??? val rddPart2 = ??? val rddAll = rddPart1.union(rddPart2) Example (on Spark-shell) val rdd1 = sc.parallelize(Seq((1, "Aug", 30),(1, "Sep", 31),(2, "Aug", 15),(2, "Sep", 10))) val rdd2 = sc.parallelize(Seq((1, "Oct",

Spark程序编译报错error: object apache is not a member of package org

强颜欢笑 提交于 2019-11-28 20:40:35
Spark程序编译报错: [INFO] Compiling 2 source files to E:\Develop\IDEAWorkspace\spark\target\classes at 1567004370534 [ERROR] E:\Develop\IDEAWorkspace\spark\src\main\scala\cn\itcast\wordCount\WordCount.scala:3: error: object apache is not a member of package org [ERROR] import org.apache.spark.rdd.RDD [ERROR] ^ [ERROR] E:\Develop\IDEAWorkspace\spark\src\main\scala\cn\itcast\wordCount\WordCount.scala:4: error: object apache is not a member of package org [ERROR] import org.apache.spark.{SparkConf, SparkContext} [ERROR] ^ [ERROR] E:\Develop\IDEAWorkspace\spark\src\main\scala\cn\itcast\wordCount

技术分享:Spark RDD详解

痞子三分冷 提交于 2019-11-28 19:48:59
  1、RDD是什么   RDD:Spark的核心概念是RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。   为什么会产生RDD?   (1)传统的MapReduce虽然具有自动容错、平衡负载和可拓展性的优点,但是其最大缺点是采用非循环式的数据流模型,使得在迭代计算式要进行大量的磁盘IO操作。RDD正是解决这一缺点的抽象方法   (2)RDD的具体描述RDD(弹性数据集)是Spark提供的最重要的抽象的概念,它是一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编   操作集合的方式,进行各种并行操作。可以将RDD理解为一个具有容错机制的特殊集合,它提供了一种只读、只能有已存在的RDD变换而来的共享内存,然后将   所有数据都加载到内存中,方便进行多次重用。a.他是分布式的,可以分布在多台机器上,进行计算。b.他是弹性的,计算过程中内错不够时它会和磁盘进行数   据交换。c.这些限制可以极大的降低自动容错开销d.实质是一种更为通用的迭代并行计算框架,用户可以显示的控制计算的中间结果,然后将其自由运用于之后   的计算。   (3)RDD的容错机制实现分布式数据集容错方法有两种:数据检查点和记录更新RDD采用记录更新的方式:记录所有更新点的成本很高。所以

Spark基础

纵饮孤独 提交于 2019-11-28 19:48:19
Spark基本知识 1、简单架构 (重点) 2、主要数据抽象RDD RDD ——弹性分布式数据集 (重点) RDD特性 (重点) RDD创建 RDD分区器 3、RDD的依赖关系 (重点) 依赖关系对比 Shuffle过程 触发shuffle的算子 4、DAG工作原理 5、算子 (重点) 转换算子(Transformation) 动作算子(Actions): 6、RDD持久化 缓存cache 检查点 7、共享变量 广播变量 累加器 8、分区及优化 分区设计 数据倾斜 9、常见数据源的装载 装载CSV数据源 装载Json文件 10、基于RDD的Spark程序开发 Spark与MapReduce对比 Spark是一种有别于MR的计算框架,它偏向于使用内存处理数据,并且尽可能的减少数据写入磁盘和shuffle的过程。 Spark = 基于内存的分布式计算框架 + SCALA + Schema的应用 为什么是schema而不是sql ? 尽管Spark提供了众多拓展SQL的组件和接口,但不可否认的是它并不是一个数据库,数据往往存储在另一个分布式的存储系统上,Spark同hive一样仅维护关于数据的元数据库。 2014年Spark超过MapReduce成为排序的排行榜第一 MapReduce缺点: 只有Map和Reduce两个操作,复杂逻辑需要繁杂的代码支持

What is RDD in spark

荒凉一梦 提交于 2019-11-28 16:21:22
Definition says: RDD is immutable distributed collection of objects I don't quite understand what does it mean. Is it like data (partitioned objects) stored on hard disk If so then how come RDD's can have user-defined classes (Such as java, scala or python) From this link: https://www.safaribooksonline.com/library/view/learning-spark/9781449359034/ch03.html It mentions: Users create RDDs in two ways: by loading an external dataset, or by distributing a collection of objects (e.g., a list or set) in their driver program I am really confused understanding RDD in general and in relation to spark

Spark 整体感知

余生长醉 提交于 2019-11-28 15:08:38
原文引用 大专栏 https://www.dazhuanlan.com/2019/08/26/5d634faceb33c/ 为了能够深入使用 Spark ,那么必须对 Spark 有更为深入的理解。整体的结构的把握会显得非常重要。整体结构在脑海中成型后,别如同脑海中有了一个 Spark 的地图,后续深入了解的每个模块都能在整体上找到对应的位置,开发对应功能也会更加了然于胸。 网上的结构图非常丰富,但是我觉得都太过抽象,缺少一些细节。我这里尝试做的就是帮助 Spark 新手读者能构建一个 Spark 的直观感受,同时也是我自己知识的一个整理。 小Demo 下面是一段简单的 demo 进程。首先从数据源中取数,这里是从文本中读取数据。然后进行一系列的转换,最终得到自己想要的结果。 public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("Spark WordCount").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> lines = sc.textFile("your/file/path"); lines.flatMap((String s) ->

Kafka集成SparkStreaming

有些话、适合烂在心里 提交于 2019-11-28 15:04:00
Spark Streaming + Kafka集成指南 Kafka项目在版本0.8和0.10之间引入了一个新的消费者API,因此有两个独立的相应Spark Streaming包可用。请选择正确的包, 请注意,0.8集成与后来的0.9和0.10代理兼容,但0.10集成与早期的代理不兼容。 注意:从Spark 2.3.0开始,不推荐使用Kafka 0.8支持。 Spark Streaming从Kafka接收数据,转换为spark streaming中的数据结构Dstream。数据接收方式有两种 :1 使用Receiver接收的旧方法:2使用Direct拉取的新方法(在Spark 1.3中引入)。 https://spark.apache.org/docs/1.6.3/streaming-kafka-integration.html https://spark.apache.org/docs/2.3.1/streaming-kafka-0-10-integration.html Receiver方式 Received是使用Kafka高级Consumer API实现的。与所有接收器一样,从Kafka通过Receiver接收的数据存储在Spark Executor的内存中,然后由Spark Streaming启动的job来处理数据。然而默认配置下,这种方式可能会因为底层的失败而丢失数据

Filtering RDD Based on condition and extracting matched data in Spark python

微笑、不失礼 提交于 2019-11-28 14:36:13
I have the data like, cl_id cn_id cn_value 10004, 77173296 ,390.0 10004, 77173299 ,376.0 10004, 77173300 ,0.0 20005, 77173296 ,0.0 20005, 77173299 ,6.0 2005, 77438800 ,2.0 Cl_id IDs: 10004 ,20005 Filter by 10004 10004, 77173296 ,390.0 10004, 77173299 ,376.0 Filter by 20005 20005, 77173296 ,0.0 20005, 77173299 ,6.0 Now I want the return RDD like, 10004,cn_id,x1(77173296.value,77173300.value) ==> 10004,77173296,390.0,376.0 20005,cn_id,x1(77173296.value,77173300.value) ==> 20005,77173296,0.0,6.0 And I want to perform some operation on this return_RDD : def cal_for(rdd_list): #list.map(position1)

Spark Java Map function is getting executed twice

 ̄綄美尐妖づ 提交于 2019-11-28 13:57:33
I have above code as Spark driver, when I execute my program it works properly saving required data as Parquet file. String indexFile = "index.txt"; JavaRDD<String> indexData = sc.textFile(indexFile).cache(); JavaRDD<String> jsonStringRDD = indexData.map(new Function<String, String>() { @Override public String call(String patientId) throws Exception { return "json array as string" } }); //1. Read json string array into a Dataframe (execution 1) DataFrame dataSchemaDF = sqlContext.read().json(jsonStringRDD ); //2. Save dataframe as parquet file (execution 2) dataSchemaDF.write().parquet("md