【问题标题】:What is "WARN ParallelCollectionRDD: Spark does not support nested RDDs (see SPARK-5063)"?什么是“WARN ParallelCollectionRDD:Spark 不支持嵌套 RDD(参见 SPARK-5063)”?
【发布时间】:2016-12-27 07:14:34
【问题描述】:

我有以下语法

val data = sc.textFile("log1.txt,log2.txt")
val s = Seq(data)
val par = sc.parallelize(s)

我得到的结果如下:

警告 ParallelCollectionRDD:Spark 不支持嵌套 RDD(请参阅 SPARK-5063)
par: org.apache.spark.rdd.RDD[org.apache.spark.rdd.RDD[String]] = ParallelCollectionRDD[2] at parallelize at :28

问题 1

parallelCollection 是如何工作的?

问题 2

我可以遍历它们并执行转换吗?

问题 3

RDD 转换和操作不是由驱动程序调用的,而是在其他转换中调用的;例如,rdd1.map(x => rdd2.values.count() * x) 无效,因为无法在 rdd1.map 转换内部执行值转换和计数操作。有关详细信息,请参阅 SPARK-5063。

这是什么意思?

【问题讨论】:

    标签: scala apache-spark spark-streaming


    【解决方案1】:

    (确实是个有趣的案例)

    如果有疑问,我总是建议遵循 Scala 中的类型(毕竟类型是我们 Scala 开发人员首先使用该语言的原因,不是吗?)

    那么,让我们来揭示类型:

    scala> val data = sc.textFile("log1.txt,log2.txt")
    data: org.apache.spark.rdd.RDD[String] = log1.txt,log2.txt MapPartitionsRDD[1] at textFile at <console>:24
    
    scala> val s = Seq(data)
    s: Seq[org.apache.spark.rdd.RDD[String]] = List(log1.txt,log2.txt MapPartitionsRDD[1] at textFile at <console>:24)
    
    scala> val par = sc.parallelize(s)
    WARN ParallelCollectionRDD: Spark does not support nested RDDs (see SPARK-5063)
    par: org.apache.spark.rdd.RDD[org.apache.spark.rdd.RDD[String]] = ParallelCollectionRDD[3] at parallelize at <console>:28
    

    正如您所说,org.apache.spark.rdd.RDD[org.apache.spark.rdd.RDD[String]] 在 Spark 中不受支持(但它确实被 Scala 编译器接受,因为它与 SparkContext.parallelize 方法的签名相匹配......不幸的是)。

    您实际上并不需要val s = Seq(data),因为log1.txt,log2.txt 这两个文件中的记录已经在“内部”RDD 中,Spark 将以分布式和并行方式处理它们所有两个文件中的所有记录(我相信这是您的用例)。

    确实认为我已经回答了我认为基于错误期望的所有三个问题,因此它们都非常相似:)

    【讨论】:

    • 在读取这两个文件时,Spark 内部是如何工作的?因为它是逗号分隔的文件。将添加多少任务,这样做的优点和缺点是什么?我的任务是处理 30 个 10GB 的 .gz 文件来处理它。
    • 这类似于您要求 Spark 处理一个较大的文件时所获得的效果。在spark.apache.org/docs/latest/programming-guide.html 中了解 RDD 以及 Spark 的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多