在pyspark中精确使用to toDebugstring()

时间:2019-04-28 19:19:03

标签: pyspark rdd

是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]

1 个答案:

答案 0 :(得分:1)

在spark中,RDD中的依赖项以图形形式登录。用简单的话来说,每一步都是血统的一部分。通过调用toDebugString方法,您实际上是在要求获取该谱系图(即发生的每个单独步骤的链,也就是创建的RDD的类型和用于创建它的方法)。有些是您显式执行的转换,而有些则不是(例如,谱系图的最底层步骤是您吞没的RDD的实际类型,但恰好在其上方是由内部机制将输入RDD中的对象转换为RDD的RDD Java类型对象)

打印语句的结果显示从下至上从创建ParallelCollectionRDD开始的每个步骤。压痕的每个变化都指示混洗边界,即发生混洗操作。您可以从谱系图中了解更多信息,以便更好地理解。