rdd相关内容
Apache Spark pyspark.RDD API 文档提到 groupByKey() 效率低下.相反,建议使用 reduceByKey()、aggregateByKey()、combineByKey() 或 foldByKey()> 代替.这将导致在 shuffle 之前在工作线程中进行一些聚合,从而减少跨工作线程的数据混洗. 给定以下数据集和 groupByKey() 表达式,什么
..
我正在尝试利用火花分区.我正在尝试做类似的事情 data.write.partitionBy("key").parquet("/location") 这里的问题是每个分区都会创建大量的镶木地板文件,如果我尝试从根目录读取,会导致读取速度变慢. 为了避免我尝试过 data.coalese(numPart).write.partitionBy("key").parquet("/locati
..
在RDD持久化方面,spark中的cache()和persist()有什么区别? 解决方案 使用 cache(),你只使用默认的存储级别: MEMORY_ONLY 用于 RDD MEMORY_AND_DISK 用于数据集 使用persist(),您可以指定RDD 和数据集 所需的存储级别. 来自官方文档: 您可以使用 persist() 或 cache() 方法将
..
这是我的 RDD[String] M1 模块1画中画画中画 b Z B画中画 c Y n4M2模块2画中画 a I n4画中画画中画 c O n5 等等.基本上,我需要一个关键的 RDD(包含第 1 行的第二个字)和可以迭代的后续 PIP 行的值. 我已经尝试了以下 val usgPairRDD = usgRDD.map(x => (x.split("\\n")(0), x)) 但这
..
我试图对格式为 (([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ... pyspark 似乎不接受数组作为普通键中的键,通过简单地应用 .reduceByKey(add) 来减少值. 我已经尝试先将数组转换为字符串,通过 .map((x,y): (str(x),y)) 但这不起作用,因为后处理字符串回数组太慢了. 有没有办法让 pyspa
..
我正在运行为 Hadoop-2.4 预先构建的 Spark-1.4.0(在本地模式下)来计算 DoubleRDD 的平方和.我的 Scala 代码看起来像 sc.parallelize(Array(2., 3.)).fold(0.0)((p, v) => p+v*v) 它给出了一个令人惊讶的结果97.0. 与 fold 的 Scala 版本相比,这非常违反直觉 Array(2., 3
..
我有一个以下类型的数据框 col1|col2|col3|col4xxxx|yyyy|zzzz|[1111],[2222] 我希望我的输出遵循类型 col1|col2|col3|col4|col5xxxx|yyyy|zzzz|1111|2222 我的 col4 是一个数组,我想将其转换为单独的列.需要做什么? 我看到很多关于 flatmap 的答案,但它们增加了一行,我只想将元组放在另
..
根据 Databricks 的最佳实践,应该避免 Spark groupByKey,因为 Spark groupByKey 处理的工作方式是,信息首先在工作人员之间进行混洗,然后处理发生.说明 那么,我的问题是,groupByKey 的替代方法是什么,以分布式和快速的方式返回以下内容? //想要这个{“key1":“1",“key1":“2",“key1":“3",“key2":“55",
..
我需要为包含多列的数据表生成完整的 row_numbers 列表. 在 SQL 中,这看起来像这样: 选择核心价值,列1,col2,col3,row_number() over (partition by key_value order by col1, col2 desc, col3)从温度; 现在,假设在 Spark 中我有一个形式为 (K, V) 的 RDD,其中 V=(col1,
..
在 Pyspark 中,我可以从一个列表中创建一个 RDD 并决定有多少个分区: sc = SparkContext()sc.parallelize(xrange(0, 10), 4) 我决定对 RDD 进行分区的分区数量如何影响性能?这如何取决于我的机器拥有的核心数量? 解决方案 主要效果是指定的分区太少或远分区太多. 分区太少您将无法利用集群中的所有可用核心. 分区太多
..
我知道如何在 scala 中找到文件大小.但如何在 spark 中找到 RDD/数据帧大小? 斯卡拉: object Main 扩展 App {val file = new java.io.File("hdfs://localhost:9000/samplefile.txt").toString()println(文件.长度)} 火花: val distFile = sc.text
..
下面的代码将从hbase读取,然后将其转换为json结构并转换为schemaRDD,但问题是我使用List来存储json字符串然后传递给javaRDD,对于大约 100 GB 的数据,master 将在内存中加载数据.从 hbase 加载数据然后执行操作,然后转换为 JavaRDD 的正确方法是什么. package hbase_reader;导入 java.io.IOException;导入
..
Spark 研究论文规定了一种基于经典 Hadoop 的新分布式编程模型MapReduce,声称在许多情况下特别是在机器学习方面的简化和巨大的性能提升.然而,本文似乎缺乏用有向无环图揭示弹性分布式数据集上内部机制的材料. 是否应该通过研究源代码来更好地学习? 解决方案 我什至一直在网上寻找有关 spark 如何从 RDD 计算 DAG 并随后执行任务的信息. 在高层次上,当在
..
当我执行以下命令时: scala>val rdd = sc.parallelize(List((1,2),(3,4),(3,6)),4).partitionBy(new HashPartitioner(10)).persist()rdd: org.apache.spark.rdd.RDD[(Int, Int)] = ShuffledRDD[10] at partitionBy at :22标度>
..
我在 HDFS 中有数千个小文件.需要处理稍小的文件子集(同样以千为单位),fileList 包含需要处理的文件路径列表. //fileList == HDFS 中的文件路径列表var masterRDD: org.apache.spark.rdd.RDD[(String, String)] = sparkContext.emptyRDDfor (i
..
我正在尝试使用 Apache Spark 和 Java 执行矩阵乘法. 我有两个主要问题: 如何在 Apache Spark 中创建可以表示矩阵的 RDD? 如何将两个这样的 RDD 相乘? 解决方案 一切都取决于输入的数据和维度 但一般来说你想要的不是 RDD 而是一种分布式数据结构org.apache.spark.mllib.linalg.distributed.目前它提
..
我正在编写一个 Spark 应用程序,并希望将一组键值对 (K, V1), (K, V2), ..., (K, Vn) 合并为一个键-多值对 (K, [V1, V2, ..., Vn]).我觉得我应该能够使用具有某种风味的 reduceByKey 函数来做到这一点: My_KMV = My_KV.reduce(lambda a, b: a.append([b])) 发生这种情况时我得到的错误是
..
在我的猪代码中,我这样做: all_combined = 联合关系1,关系2,关系 3、关系 4、关系 5、关系 6. 我想用 spark 做同样的事情.但是,不幸的是,我发现我必须成对地做: first = rdd1.union(rdd2)第二 = first.union(rdd3)第三 = 第二.union(rdd4)# .... 等等 是否有一个联合运算符可以让我一次对多个 rdd
..
我有一个名为 df 的非常大的 pyspark.sql.dataframe.DataFrame.我需要某种枚举记录的方法 - 因此,能够访问具有特定索引的记录.(或选择具有索引范围的记录组) 在熊猫中,我只能制作 indexes=[2,3,6,7]df[索引] 这里我想要类似的东西,(并且不将数据帧转换为熊猫) 我能得到的最近的是: 通过以下方式枚举原始数据帧中的所有对象:
..
当我需要在 RDD 中对数据进行分组时,我总是使用 reduceByKey,因为它在混洗数据之前执行 map side reduce,这通常意味着混洗的数据更少,从而获得更好的性能.即使地图端的reduce函数收集了所有的值并且实际上并没有减少数据量,我仍然使用reduceByKey,因为我假设reduceByKey的性能永远不会比 groupByKey 差.但是,我想知道这个假设是否正确,或者是
..