RDD與DataFrame的互操作

2021-08-16 10:05:56 字數 1020 閱讀 9345

1.dataframe與rdd互操作方式一:反射方式

(1)使用反射來推斷包含了特定資料型別的rdd的元資料

(2)使用dataframe api或者sql方式程式設計

//新增隱式轉換

import spark.implicits._

//建立乙個rdd

val rdd = spark.sparkcontext.textfile("***")

//轉換為df

val peopledf = rdd.map(_.split(",")).map(line => info(line(0).toint,line(1),line(2).toint)).todf()

case class info(id: int, name: string, age: int)

2.程式設計方式

使用程式設計介面,構造乙個schema並將其應用在已知的rdd上。

//建立乙個rdd

val rdd = spark.sparkcontext.textfile("***")

//轉換rdd的record為row

val infordd = rdd.map(_.split(",").map(line => row(line(0).toint, line(1),line(2).toint))

//建立乙個schema

val structtype = structtype(array(structfield("id",intergertype,true),structfield("name",stringtype,true),structfield("age",intergertype,true)))

//將schema應用於rdd

val infodf = spark.createdataframe(infordd,structtype)

dataframe和rdd互操作的兩種方式

1)反射:case class 前提:事先知道你的字段、字段型別

2)程式設計:row事先不知道列

3)選型:優先第一種

spark RDD與dataframe互操作

1 反射 case class方式 此方式必須先知道資料型別與字段,定義class,case class people name string,age int,classname int 再轉換rdd val rdd spark.sparkcontext.textfile f import spar...

基於RDD建立DataFrame

spark sql支援兩種不同的方法用於轉換已存在的rdd成為dataset。第一種方法是使用反射去推斷乙個包含指定的物件型別的rdd的schema。在你的spark應用程式中當你已知schema時這個基於方法的反射可以讓你的 更簡潔。不過這種方法要求你在寫程式時已經知道rdd物件的結構資訊,因為需...

RDD轉換成DataFrame的兩種方式

spark sql支援兩種不同的方式將rdd轉換為dataframe。第一種是使用反射來推斷包含特定型別物件的rdd的模式,這種基於反射的方式可以提供更簡潔的 如果在編寫spark應用程式時,已經明確了schema,可以使用這種方式。第二種方式是通過可程式設計介面來構建schema,然後將其應用於現...