gpt4 book ai didi

java - 从对象访问数据而不是使用 saveAsTextFile 保存数据

转载 作者:行者123 更新时间:2023-11-30 03:44:46 27 4
gpt4 key购买 nike

在下面的代码片段中,saveAsTxtFile 会将其写入以逗号分隔格式的文件中。相反,我希望将数据作为对象保存在内存中并对其进行操作。

val logFile = "/tmp/master.txt"
val positive = "/tmp/positive.txt"
val negative = "/tmp/negative.txt"

val sc = new JavaSparkContext("local[4]", "Twitter Analyzer", "/siva/spark-1.1.0/",Array("target/scala-2.10/Simple-assembly-0.1.0.jar"))

val twitterFeed = sc.textFile(logFile).cache()

val value = iterator.next()
val numAs = twitterFeed.filter((i: String) => i.contains(value))

numAs.saveAsTextFile("/tmp/output/positive/" + value)

所以问题是,我如何使用变量 numAs 中的值?说文件内容是

a,b,1,2
c,d,3,4

我想单独做一些针对 a、b 和 c、d 的工作。

最佳答案

numAs 已经是内存中的 RDD。您有两个选择:

  1. 使用 RDD operations 继续处理 numAs RDD 的内容
  2. 将 RDD 的内容“收集”到数组中并对其进行操作:

    val内容=numAs.collect

    mOp(内容)

选项#1将继续利用分布式 Spark 基础设施,并且应该是处理大型数据集的方法。

选项 #2 将在驱动程序中将 RDD 数据收集为数组。数据必须适合驱动程序内存。生成的数组只是一个普通的 JVM 数组,其内容与源 RDD 类型相同,您可以在其上使用所有受支持的 Scala 函数。

关于java - 从对象访问数据而不是使用 saveAsTextFile 保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26015965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com