当前位置: 首页 > 知识库问答 >
问题:

根据某些键将火花rdd分成2个单独的文件

相弘和
2023-03-14

我正在使用Cloudera VM,一个linux终端和火花版本1.6.0

假设我有以下数据集:

优先级、数量、销售额=

最低价,6,261.54

高,44,1012

低,1,240

高,252500

我可以加载," val input file = sc . textfile(" file:///home/cloud era/stat . txt ")

我可以排序,"inputFile.sort(x=

但我想将低优先级和高优先级数据放入两个单独的文件中。

这会是一个过滤器,或减少或分区?我怎么能做到最好?如果我能得到帮助,我想我也许可以绕开我的头创建一个优先的RDD

共有1个答案

宗安翔
2023-03-14

这可能不是最好的解决方案,但您可以使用2个过滤器来创建2个不同的RDD,一个过滤器删除低线,另一个过滤器删除高线,然后保存在HDFS下。

inputFile.filter($"Priority" == "low").saveAsTextFile("low_file");
inputFile.filter($"Priority" == "high").saveAsTextFile("high_file");
 类似资料:
  • 我有RDD,其中每个记录都是int: 我所需要做的就是将这个RDD拆分成批。即。制作另一个RDD,其中每个元素都是固定大小的元素列表: 这听起来微不足道,然而,最近几天我很困惑,除了下面的解决方案之外,什么也找不到: > 使用ZipWithIndex枚举RDD中的记录: 这将得到我所需要的,然而,我不想在这里使用组。当您使用普通映射Reduce或一些抽象(如Apache Crunch)时,它是微不

  • 我通过指定分区的数量从文本文件创建RDD(Spark 1.6)。但它给我的分区数与指定的分区数不同。 案例1 案例2 案例3 案例4 文件/home/pvikash/data/test的内容。txt是: 这是一个测试文件。将用于rdd分区 基于以上案例,我有几个问题。 对于案例2,显式指定的分区数为0,但实际分区数为1(即使默认最小分区为2),为什么实际分区数为1? 对于案例3,为什么在指定数量的

  • 问题内容: 在我的猪代码中,我这样做: 我想用spark做同样的事情。但是,不幸的是,我看到我必须成对进行: 是否有联合运算符可以让我一次对多个rdds进行操作: 例如 这是一个方便的问题。 问题答案: 如果这些是RDD,则可以使用方法: 没有等效项,但这只是一个简单的问题: 如果要在RDD上大量使用和重新创建,可能是避免与准备执行计划的成本相关的问题的更好选择:

  • 我有5个表存储为CSV文件(A.CSV、B.CSV、C.CSV、D.CSV、E.CSV)。每个文件按日期分区。如果文件夹结构如下:

  • 我想了解以下关于火花概念的RDD的事情。 > RDD仅仅是从HDFS存储中复制某个节点RAM中的所需数据以加快执行的概念吗? 如果一个文件在集群中被拆分,那么对于单个flie来说,RDD从其他节点带来所有所需的数据? 如果第二点是正确的,那么它如何决定它必须执行哪个节点的JVM?数据局部性在这里是如何工作的?

  • 我有一个带有20个分区的火花数据帧df,每个分区都有一天的数据。这意味着我的输入数据帧已经按天分区。我的目标是编写一个拼花文件,该文件也按天分区。如果我尝试以下命令: df。重新划分(5)。写模式(“覆盖”)。partitionBy(['day'])。拼花地板(“路径”) 当我的输入数据框已经分区时,有很多洗牌正在发生。请注意,这个数据框包含超过10亿行,并且由于洗牌,它正在杀死我的执行器。 有没