Scala 如何在spark streaming中打印数据流的最后n行?
Spark streaming dstream print显示前10行,如 val fileDstream=ssc.textFileStreamhdfs://localhost:9000/abc.txt fileDstream.printScala 如何在spark streaming中打印数据流的最后n行?,scala,spark-streaming,Scala,Spark Streaming,Spark streaming dstream print显示前10行,如 val fileDstream=ssc.textFileStreamhdfs://localhost:9000/abc.txt fileDstream.print 考虑到文本文件大且未排序,是否有办法获得最后n行 如果您这样做,您可以简化为: fileDstream.foreachRDD { rdd => rdd.collect().last } 但是,这存在将所有数据收集到驱动程序的问题 你
考虑到文本文件大且未排序,是否有办法获得最后n行 如果您这样做,您可以简化为:
fileDstream.foreachRDD { rdd =>
rdd.collect().last
}
但是,这存在将所有数据收集到驱动程序的问题
你的数据分类了吗?如果是这样的话,您可以反转排序并选择第一个。或者,hackey实现可能涉及mapPartitionsWithIndex,它为除最后一个分区之外的所有分区返回一个空迭代器。对于最后一个分区,您将过滤除迭代器中最后一个元素之外的所有元素。这将留下一个元素,这是您的最后一个元素
或者你也可以尝试一下
fileDstream.foreachRDD { rdd =>
rdd.top(10)(reverseOrdering)
}
@普拉巴特:如果这个答案对你有效,请让它正确