python - Spark toDebugString 在 python 中不好用

标签 python scala apache-spark

这是我在 scala 中使用 toDebugString 时得到的结果:

scala> val a  = sc.parallelize(Array(1,2,3)).distinct
a: org.apache.spark.rdd.RDD[Int] = MappedRDD[3] at distinct at <console>:12

scala> a.toDebugString
res0: String = 
(4) MappedRDD[3] at distinct at <console>:12
 |  ShuffledRDD[2] at distinct at <console>:12
 +-(4) MappedRDD[1] at distinct at <console>:12
    |  ParallelCollectionRDD[0] at parallelize at <console>:12

这在 python 中是等价的:

>>> a = sc.parallelize([1,2,3]).distinct()
>>> a.toDebugString()
'(4) PythonRDD[6] at RDD at PythonRDD.scala:43\n |  MappedRDD[5] at values at NativeMethodAccessorImpl.java:-2\n |  ShuffledRDD[4] at partitionBy at NativeMethodAccessorImpl.java:-2\n +-(4) PairwiseRDD[3] at RDD at PythonRDD.scala:261\n    |  PythonRDD[2] at RDD at PythonRDD.scala:43\n    |  ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:315'

如您所见,python 中的输出不如 scala 中的输出好。有没有什么技巧可以让这个函数有更好的输出?

我正在使用 Spark 1.1.0。

最佳答案

尝试添加一个 print 语句,以便实际打印调试字符串,而不是显示其 __repr__:

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

关于python - Spark toDebugString 在 python 中不好用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342132/

相关文章:

python - Python 中自定义错误处理程序的正确命名范围

python - 异常被执行两次并被不同的 except block 捕获

python - 创建可变数量的类实例

python - 我应该如何为 R 和 Octave 方法(可能使用 Python)进行快速 GUI 开发?

scala - 如何解决此错误值toDS不是org.apache.spark.rdd.RDD的成员?

scala - Scala 如何将 Seq of Pair 传输到 Map?

scala - Apache Spark在SQL表达式中启动

scala - 为带有元组的案例类定义 Writes[...]

apache-spark - hive 如何使用条件语句根据结果执行不同的查询

java - 需要多个 slf4j 绑定(bind)的解决方案,而不从类路径中删除其他绑定(bind) jar