spark RDD與dataframe互操作

2021-10-23 09:06:09 字數 925 閱讀 7588

1:反射 case class方式

此方式必須先知道資料型別與字段,定義class,

case class people(name:string,age:int,classname:int)

再轉換rdd

val rdd=spark.sparkcontext.textfile(「f:

import spark.implicits._

val df=rdd.map.map(line=>people(line(0).tostring(),line(1).toint,line(2).toint)).todf()

此時可以根據sql方式查詢

df.createorreplacetempview(「p」)

spark.sql(「select * from p」).show()

也可以根據api方式查詢

df.filter(df.col(「age」)>10).show()

2:程式設計 row方式

此時不知道資料型別與字段

val rdd1 = rdd.map.map(line=>row(line(0).tostring(),line(1).toint,line(2).toint))

row方式需要定義schema

val schemadf=structtype(array(

structfield(「name」,stringtype,true),

structfield(「age」,integertype,true),

structfield(「class」,integertype,true)

))使用spark.createdataframe(rdd1,schemadf)將rdd與dataframe相關聯

在進行查詢即可,此方式同樣存在api查詢與sql查詢

建議程式設計中使用反射方式

spark RDD程式設計

rdd就是乙個不可變的分布式物件集合。建立rdd 1 讀取乙個外部資料集 sparkcontext.textfile 2 在驅動器程式中對乙個集合進行並行化。rdd 操 作 1 轉 化 操 作 transformation 會由乙個 rdd 生成乙個新的 rdd。2 行 動 操 作 action 會...

python中將多個列表轉成dataframe

python中將列表轉換成為資料框有兩種情況 第一種是兩個不同列表轉換成乙個資料框,第二種是乙個包含不同子列表的列表轉換成為資料框。第一種 兩個不同列表轉換成為資料框 from pandas.core.frame import dataframe a 1 2,3 4 列表a b 5 6,7 8 列表...

Spark RDD使用原則

如今隨著資料量的不斷增加,hadoop已經難以滿足處理需求,逐漸發展起來的spark基於記憶體的平行計算已經得到了廣泛的應用。spark博大精深,編寫起來比hadoop方便很多,簡單的幾行 就可以實現hadoop複雜的 簡單方便!著名的例子就是單詞統計。對於spark效能的調優部分可以檢視美團點評團...