Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用它替换每个文件的内容';spark中的s标头值_Java_Apache Spark - Fatal编程技术网

Java 用它替换每个文件的内容';spark中的s标头值

Java 用它替换每个文件的内容';spark中的s标头值,java,apache-spark,Java,Apache Spark,我有一个包含多个文本文件的目录,我访问spark中的所有文件,如下所示 JavaRDD<String> filesRDD = sc.textFile(directoryName); I like 1 John eat 3 and 1 这意味着,如果内容中有一个“3”,它将映射到“lemon” 内容示例如下: JavaRDD<String> filesRDD = sc.textFile(directoryName); I like 1 John eat 3 and 1

我有一个包含多个文本文件的目录,我访问spark中的所有文件,如下所示

JavaRDD<String> filesRDD = sc.textFile(directoryName);
I like 1
John eat 3 and 1
这意味着,如果内容中有一个“3”,它将映射到“lemon”

内容示例如下:

JavaRDD<String> filesRDD = sc.textFile(directoryName);
I like 1
John eat 3 and 1
等等

现在我需要做的是,首先从内容中筛选行,然后从映射中指定原始值。例如,第一个过滤器由字符串
“like”
过滤,我得到
“I like 1”
,然后,我用映射替换,然后
“I like apple”


请注意,此映射头与每个文件不同。我该怎么做?因为我是spark的新手,所以我对如何实现这一点没有太多想法。

你想要这样的东西吗

var fruitPair = sc.parallelize(List("1,apple","4,banana","3,lemon")).map{ str => 
    var temp = str.split(",")
    (temp(0), temp(1))
}
fruitPair.toDF.show()
var contents = List("I like 1", "John eat 3 and 1")

var results = contents.map { content => 
    var tmpContent = content
    fruitPair.collect.foreach { item => 
        var index = tmpContent.indexOf(item._1)
        if (index >= 0) {
            tmpContent = tmpContent.replace(item._1, item._2)
        }
    }
    tmpContent
}

results.foreach{ it => println(it) }
I like apple
John eat lemon and apple
results: List[String] = List(I like apple, John eat lemon and apple)