【发布时间】:2017-04-24 15:03:06
【问题描述】:
从 spark-shell 运行 spark 时,当创建每个定义的变量时,shell 会打印出该变量的类型签名以及实例的 toString。
如何在不使用 shell(用于调试日志或 stdout/stderr)的情况下从 spark 脚本或类以编程方式生成相同的签名?
在 spark shell 中运行的示例代码(见下面的粗体输出)
代码:
val data = Array("one", "two", "three", "two", "three", "three")
val dataRdd = sc.parallelize(data)
val dataTupleRdd = dataRdd.map(word => (word, 1))
val countsRdd = dataTupleRdd.reduceByKey(_ + _)
countsRdd.foreach(println)
代码在 spark shell 中运行(见下面的输出:我想从 api 生成):
我想要生成的示例类型信息(在日志或输出中):
Array[String]
org.apache.spark.rdd.RDD[String]
org.apache.spark.rdd.RDD[(String, Int)]
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.1.0
/_/
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45)
Type in expressions to have them evaluated.
Type :help for more information.
scala> val data = Array("one", "two", "three", "two", "three", "three")
data: Array[String] = Array(one, two, three, two, three, three)
scala> val dataRdd = sc.parallelize(data)
dataRdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:26
scala> val dataTupleRdd = dataRdd.map(word => (word, 1))
dataTupleRdd: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[1] at map at <console>:28
scala> val countsRdd = dataTupleRdd.reduceByKey(_ + _)
countsRdd: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[2] at reduceByKey at <console>:30
scala> countsRdd.foreach(println)
(two,2)
(one,1)
(three,3)
【问题讨论】:
标签: scala apache-spark