虽然我的第一本能是将DataFrames所有内容都使用,但这是不可能的-某些操作显然更容易和/或更好地作为RDD操作执行,更不用说某些GraphX仅适用于的API RDDs。
我似乎花了大量的时间,这些天之间来回转换DataFrames和RDDs-所以有什么性能影响?拿RDD.checkpoint-没有对DataFrame等的东西,所以当我这样做时,在幕后会发生什么:
val df = Seq((1,2),(3,4)).toDF("key","value")
val rdd = df.rdd.map(...)
val newDf = rdd.map(r => (r.getInt(0), r.getInt(1))).toDF("key","value")
Run Code Online (Sandbox Code Playgroud)
显然,这是一个很小的例子,但是很高兴知道转换中幕后发生了什么。