Scala 要为RDD分配给val的返回类型

Scala 要为RDD分配给val的返回类型,scala,apache-spark,Scala,Apache Spark,我正在玩spark代码来了解更多关于洗牌的知识。我编写了以下代码,以了解如果存在if-else语句,阶段是如何形成的。我已经声明了val result,以便稍后在if语句中将结果分配给它。但我不确定要分配给它的返回类型 是否有一个与所有RDD一起使用的抽象类 val conf = new SparkConf().setMaster("local").setAppName("spark shuffle") val sc = new SparkContext(conf) val d = sc.pa

我正在玩spark代码来了解更多关于洗牌的知识。我编写了以下代码,以了解如果存在
if-else
语句,阶段是如何形成的。我已经声明了
val result
,以便稍后在
if
语句中将结果分配给它。但我不确定要分配给它的返回类型

是否有一个与所有RDD一起使用的抽象类

val conf = new SparkConf().setMaster("local").setAppName("spark shuffle")
val sc = new SparkContext(conf)

val d = sc.parallelize(0 until 1000).map(i => (i%1000, i))
val x = d.reduceByKey(_+_)

val count = 1
val result: RDD // What is the correct return type here?

if(count == 1)
  {
    result= d.rightOuterJoin(x)
    result.collect()

  }
d是RDD[(Int,Int)]

然后按键执行reduce会得到相同的结果,但会降低

然后,进行右外部联接会得到(Int,(Option[Int],Int])的RDD,即每个键的L和R值(如果不存在,则L选项是可选的)

所以做一个collect会得到一个相同的数组


所有这些函数的API文档都不容易理解,有很多泛型类型和很多隐式类型。我建议您使用一个IDE为您提示类型,或者使用一个工具为您提供一个控制台,您可以在其中尝试代码片段。

您可以避免分配到
var
(应该是
var
,而不是
val


我使用
val结果运行代码:RDD[(Int,(Option[Int],Int))]
。但它向我显示了两个错误
Error:(14,9)只有traits和抽象类可以声明但未定义成员val d3:RDD[(Int,(Option[Int],Int))]
Error:(17,11)重新分配到val d3=d.rightOuterJoin(d1)
val conf = new SparkConf().setMaster("local").setAppName("spark shuffle")
val sc = new SparkContext(conf)

val d = sc.parallelize(0 until 1000).map(i => (i%1000, i))
val x = d.reduceByKey(_+_)

val count = 1

if (count == 1) {
    d.rightOuterJoin(x).collect()
}