在pyspark中精确使用to toDebugstring()

问题描述 投票:1回答:1

是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]
pyspark rdd
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.