pyspark 中 toDebugstring() 的准确使用

Kar*_*rai 5 rdd pyspark

我是 pyspark 的新手,正在尝试了解 toDebugstring() 的确切用法。您能从下面的代码片段中解释一下吗?

 >>> a = sc.parallelize([1,2,3]).distinct()
    >>> print a.toDebugString()
    (8) PythonRDD[27] at RDD at PythonRDD.scala:44 [Serialized 1x Replicated]
     |  MappedRDD[26] at values at NativeMethodAccessorImpl.java:-2 [Serialized 1x Replicated]
     |  ShuffledRDD[25] at partitionBy at NativeMethodAccessorImpl.java:-2 [Serialized 1x Replicated]
     +-(8) PairwiseRDD[24] at distinct at <stdin>:1 [Serialized 1x Replicated]
        |  PythonRDD[23] at distinct at <stdin>:1 [Serialized 1x Replicated]
        |  ParallelCollectionRDD[21] at parallelize at PythonRDD.scala:358 [Serialized 1x Replicated]
Run Code Online (Sandbox Code Playgroud)

小智 3

在 Spark 中,RDD 中的依赖关系以图表的形式记录。简而言之,每一步都是血统的一部分。通过调用 toDebugString 方法,您本质上是要求显示此谱系图(也称为发生的每个单独步骤的链,即创建的 RDD 类型和用于创建它的方法)。有些是您显式执行的转换,而另一些则不是(例如,谱系图的最底层步骤是您吞没的 RDD 的真实类型,但在其上方是内部机制创建的 RDD,用于将输入 RDD 中的对象转换为Java 类型对象)

打印语句的结果显示了从创建 ParallelCollectionRDD 开始自下而上的每一步。缩进的每次变化都是洗牌边界的指示,即洗牌操作的发生。您可以从谱系图中阅读更多内容以更好地理解。