【问题标题】:Access dependencies available in Scala but no PySpark在 Scala 中可用但没有 PySpark 的访问依赖项
【发布时间】:2017-11-30 20:02:46
【问题描述】:

我正在尝试访问 RDD 的依赖项。在 Scala 中,这是一个非常简单的代码:

scala> val myRdd = sc.parallelize(0 to 9).groupBy(_ % 2)
myRdd: org.apache.spark.rdd.RDD[(Int, Iterable[Int])] = ShuffledRDD[2] at groupBy at <console>:24

scala> myRdd.dependencies
res0: Seq[org.apache.spark.Dependency[_]] = List(org.apache.spark.ShuffleDependency@6c427386)

但依赖项在 PySpark 中不可用。关于如何访问它们的任何指示?

>>> myRdd.dependencies
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'PipelinedRDD' object has no attribute 'dependencies'

【问题讨论】:

    标签: python apache-spark rdd


    【解决方案1】:

    没有支持的方式来做到这一点,因为它没有那么有意义。你可以

    rdd = sc.parallelize([1, 2, 3]).map(lambda x: x)
    deps = sc._jvm.org.apache.spark.api.java.JavaRDD.toRDD(rdd._jrdd).dependencies()
    print(deps)
    ## List(org.apache.spark.OneToOneDependency@63b86b0d)
    
    for i in range(deps.size()):
        print(deps.apply(i))
    
    ## org.apache.spark.OneToOneDependency@63b86b0d
    

    但我认为这不会让你走得太远。

    【讨论】:

    • 这很完美,正是我所需要的。非常感谢!
    猜你喜欢
    • 2020-05-08
    • 2019-01-02
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2019-10-17
    相关资源
    最近更新 更多