RDD转换和操作只能由驱动程序调用,而不能在其他转换内部调用; 例如,rdd1.map(x => rdd2.values.count()*x)无效,因为无法在rdd1.map转换中执行值转换和计数操作.有关更多信息,请参阅SPARK-5063.
正如错误所说,我正在尝试在主映射函数中映射(转换)JavaRDD对象,Apache Spark怎么可能?
主JavaPairRDD对象(TextFile和Word是定义的类):
JavaPairRDD<TextFile, JavaRDD<Word>> filesWithWords = new...
Run Code Online (Sandbox Code Playgroud)
和地图功能:
filesWithWords.map(textFileJavaRDDTuple2 -> textFileJavaRDDTuple2._2().map(word -> new Word(word.getText(), (long) textFileJavaRDDTuple2._1().getText().split(word.getText()).length)));
Run Code Online (Sandbox Code Playgroud)
我也试过foreach而不是map功能,但没有工作.(当然搜索SPARK-5063)