[英]Spark 1.4.1 and Scala: create DataFrame from scratch
我已經創建了一堆我需要用於測試目的的案例類。 我當時做了很多這樣的陳述:
case class Bar(id: Int, desc: String)
val foo = Bar(1, "baz")
val bar = sc.makeRDD(Array(foo)).toDF
這樣可行。 因為我正在做很多這些調用,所以我認為創建一個函數會很好:
def dfify[T: ClassTag](obj: T): DataFrame = sc.makeRDD(Array(obj)).toDF
但是,這給了我以下錯誤:
error: value toDF is not a member of org.apache.spark.rdd.RDD[T]
我試着加入勢必牛逼<上下文:產品的建議在這里以稍微不同的背景,但是這並不能幫助。
問題是沒有它的功能,但是讓一些重復的位稍微簡化會很好。 我認為需要1分鍾的東西已經花了很多而沒有結果。
我在Spark 1.4.1上,我無法改變它,因此我無法使用createDataFrame()
。
想法?
您還必須創建一個SQLContext
並導入其SQLContext
,否則將RDD
隱式轉換為DataFrameHolder
(具有toDF
方法)不在范圍內。
另一個問題是 - ClassTag
還不夠,還需要TypeTag
。
此代碼編譯和工作:
import scala.reflect.runtime.universe._
import scala.reflect.ClassTag
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
def dfify[T <: Product : ClassTag : TypeTag](obj: T): DataFrame = sc.makeRDD(Array(obj)).toDF()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.