大資料學習37 DataFrame集合減操作例子

2021-08-11 23:20:32 字數 2098 閱讀 6770

需求:

對df1 和 df2 連個檔案程序處理,將在df1 裡編號並且不在 df2 裡編號的資料取出。

df1.txt:

1 wxk 44

2 panda 55

3 monkey 66

4 tiger 33

df2.txt:

2 china

3 usa

結果如下:

+---+-----+-----+

| id| name|score|

+---+-----+-----+

| 1| wxk| 44|

| 4|tiger| 33|

+---+-----+-----+

**如下:

package zuoye11_22

import org.apache.spark.sql.sparksession

/** * 用來將df1 - df2 ,對df1 進行一些過濾

* 2017.11.12

*/object

df1minusedf2

/*** df1 - df2 的功能

* 採用不同方式進行操作,進行對比

* 採用case class 的方式 不建議這麼用

* * @param spark

*/private

def runudfdf1minusedf2(spark: sparksession): unit = ).todf()

val df2 = spark.sparkcontext.textfile( "d:/test/df2.txt" )

.map( _.split( "\t" ) ).map( x => ).todf()

//檢視df的結構

// df1.printschema()

// df2.printschema()

//方法一:

//進行集合減操作

// df1.createorreplacetempview( "df1_table" )

// df2.createorreplacetempview( "df2_table" )

// spark.sql( " select a.id from df1_table a " ).show

// spark.sql( " select b.id from df2_table b " ).show

//用in 的方式,先得到乙個只有id的集合,再用in去匹配

" select * from df1_table c where c.id in (select a.id from df1_table a minus select b.id from df2_table b) " ).show

//用leftjoin 方式

// spark.sql( "select dd.id,dd.name,dd.score from " +

// "(select * from " +

// "(select aa.*,bb.id as tmp from df1_table aa left join df2_table bb on aa.id=bb.id) cc" +

// " where cc.tmp is null) dd " ).show()

//方法二:

//採用 dataframe 相關運算元,這種方式不需要建臨時表,建議使用

df1.join(df2,array("id"),"left_outer").filter("loc is null").select("id","name","score").show()

} //採用 case class 方式去建 dataframe

case

class

df1_structure

(id: int, name: string, score: string)

case

class

df2_structure

(id: int, loc: string)

}

大資料學習

1.資料清洗 洗掉髒資料,對資料最後一步審核和糾正,包括一致性檢查,無效資料,不完整資料,衝突資料,重複資料等的處理,計算機自動完成。2.資料傾斜 資料傾斜就是我們在計算資料的時候,資料的分散度不夠,導致大量的資料集中到了一台或者幾台機器上計算,這些資料的計算速度遠遠低於平均計算速度,導致整個計算過...

大資料學習

hadoop的hdfs和mapreduce子框架主要是針對大資料檔案來設計的,在小檔案的處理上不但效率低下,而且十分消耗記憶體資源 每乙個小檔案占用乙個block,每乙個block的元資料都儲存在namenode的記憶體裡 解決辦法通常是選擇乙個容器,將這些小檔案組織起來統一儲存。hdfs提供了兩種...

大資料如何學習 cda認證 大資料學習之學習要求

眾所周知,大資料是現在非常火的行業,前景也是非常的不錯,大資料要處理的資料成千上萬,資料的處理方法也需要不斷地與時俱進。就現如今的發展趨勢而言,大資料技術的發展如火如荼。在各個領域都得到了廣泛的應用,而且就其目前的發展情況來看,大資料技術具有十分良好的發展前景。正因為這樣,很多人想要學習大資料,對於...