flatmap函数没有显示正确的输出

5kgi1eie  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(278)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

26天前关门了。
改进这个问题
我正在尝试使用这个函数 flatMap 但是它并没有显示预期的结果(即一行中的每个单词),而是显示同一行中每个短语的所有单词。
有人知道这背后的原因吗?

public static void main(String[] args) {
    System.setProperty("hadoop.home.dir", "C:\\hadoop") ;
    Logger.getLogger("org.apache").setLevel(Level.WARN);
    SparkConf conf = new SparkConf().setAppName("startingSpark").setMaster("local[*]") ;
    JavaSparkContext sc = new JavaSparkContext(conf) ;
    JavaRDD<String> initRdd = sc.textFile("src/main/resources/subtitles/input.txt") ;   
    JavaRDD<String> lettersOnlyRdd = initRdd.map( sentence-> sentence.replaceAll("[^a-zA-Z\\s]", "").toLowerCase()) ;
    JavaRDD<String> removeBlankedLines = lettersOnlyRdd.filter(sentence -> sentence.trim().length()> 0);
    JavaRDD<String> words = removeBlankedLines.flatMap(sentence ->Arrays.asList(sentence.split("      ")).iterator()) ;     
    JavaRDD<String> restWords = words.filter(word -> Util.isNotBoring(word)) ;
    List<String> results = restWords.take(50) ;
    results.forEach( value -> System.out.println(value));
}

结果显示:

但我想得到的是:

mbskvtky

mbskvtky1#

我猜,错误在于分裂。尝试

sentence.split(" ") //just one space

您试图在原始版本中拆分几个空格,因此没有拆分。

相关问题