试图保存输出:
def main(args:Array [String]){ val conf = new SparkConf()。setAppName(“Spark Pi”); val spark = new SparkContext(conf);
val fileData = spark.binaryFiles(“我…
如果可以,重新实施 printRefList() 如 returnRefList() 相反,它返回 String 而不是打印它。然后它只是一个问题:
printRefList()
returnRefList()
String
fileData.map(returnRefList(extractPdfContent(_), 0)).saveAsTextFile()
或者那种效果。
如前所述,打电话 .collect() 将整个洗牌 RDD 进入记忆中 Array 在您的驱动程序上,消除了为并行优化运行spark的好处。既然你要保存到 HDFS ,没有必要永远 collect() 。
.collect()
RDD
Array
HDFS
collect()
假如说 printReflist ()不返回单位本身。
printReflist
foreach 不返回任何结果,你应该使用 map 代替
foreach
map
val result = fileData.collect().map(extractPdfContent).map(x=>printReflist(x,0)); result.saveAsTextFile....
如果确实 printRefList ()正在回归 Unit ,那么你应该把你的过程分成两部分:
printRefList
Unit
val result = ileData.collect().map(extractPdfContent) //print result.foreach(x=>printReflist(x,0)); //save to Text result.saveAsTextFile....