如何检查PySpark中的空RDD

时间:2017-01-06 16:45:02

标签: apache-spark pyspark spark-streaming rdd

tweetStream.foreachRDD((rdd, time) => {
  val count = rdd.count()
  if (count > 0) {
    var fileName =  outputDirectory + "/tweets_" + time.milliseconds.toString    
    val outputRDD = rdd.repartition(partitionsEachInterval) 
    outputRDD.saveAsTextFile(fileName) 
}

我试图以python方式检查流数据中的计数值或空RDD,找到方法,也尝试了以下链接中的示例。 http://spark.apache.org/docs/latest/streaming-programming-guide.html

3 个答案:

答案 0 :(得分:4)

RDD.isEmpty

  

当且仅当RDD根本不包含任何元素时才返回true。

sc.range(0, 0).isEmpty()
True
sc.range(0, 1).isEmpty()
False

答案 1 :(得分:0)

尝试使用以下代码段。

def process_rdd(rdd):
    print rdd.count()
    print("$$$$$$$$$$$$$$$$$$$$$$")
    streamrdd_to_df(rdd)

def empty_rdd():
    print "###The current RDD is empty. Wait for the next complete RDD ###"

clean.foreachRDD(lambda rdd: empty_rdd() if rdd.count() == 0 else process_rdd(rdd))

答案 2 :(得分:0)

您只需使用RDD.isEmpty作为user6910411建议:

df.rdd.isEmpty()

返回布尔值。