1. 程式人生 > >Spark dataframe建立&操作總結

Spark dataframe建立&操作總結

DataFrame 的函式
Action 操作
1、 collect() ,返回值是一個數組,返回dataframe集合所有的行
2、 collectAsList() 返回值是一個Java型別的陣列,返回dataframe集合所有的行
3、 count() 返回一個number型別的,返回dataframe集合的行數
4、 describe(cols: String*) 返回一個通過數學計算的類表值(count, mean, stddev, min, and max),這個可以傳多個引數,中間用逗號分隔,如果有欄位為空,那麼不參與運算,只這對數值型別的欄位。例如df.describe("age", "height").show()
5、 first() 返回第一行 ,型別是row型別
6、 head() 返回第一行 ,型別是row型別
7、 head(n:Int)返回n行  ,型別是row 型別
8、 show()返回dataframe集合的值 預設是20行,返回型別是unit
9、 show(n:Int)返回n行,,返回值型別是unit
10、 table(n:Int) 返回n行  ,型別是row 型別

dataframe的基本操作
1、 cache()同步資料的記憶體
2、 columns 返回一個string型別的陣列,返回值是所有列的名字
3、 dtypes返回一個string型別的二維陣列,返回值是所有列的名字以及型別
4、 explan()列印執行計劃  物理的
5、 explain(n:Boolean) 輸入值為 false 或者true ,返回值是unit  預設是false ,如果輸入true 將會列印 邏輯的和物理的
6、 isLocal 返回值是Boolean型別,如果允許模式是local返回true 否則返回false
7、 persist(newlevel:StorageLevel) 返回一個dataframe.this.type 輸入儲存模型型別
8、 printSchema() 打印出欄位名稱和型別 按照樹狀結構來列印
9、 registerTempTable(tablename:String) 返回Unit ,將df的物件只放在一張表裡面,這個表隨著物件的刪除而刪除了
10、 schema 返回structType 型別,將欄位名稱和型別按照結構體型別返回
11、 toDF()返回一個新的dataframe型別的
12、 toDF(colnames:String*)將引數中的幾個欄位返回一個新的dataframe型別的,
13、 unpersist() 返回dataframe.this.type 型別,去除模式中的資料
14、 unpersist(blocking:Boolean)返回dataframe.this.type型別 true 和unpersist是一樣的作用false 是去除RDD

整合查詢:
1、 agg(expers:column*) 返回dataframe型別 ,同數學計算求值
df.agg(max("age"), avg("salary"))
df.groupBy().agg(max("age"), avg("salary"))
2、 agg(exprs: Map[String, String])  返回dataframe型別 ,同數學計算求值 map型別的
df.agg(Map("age" -> "max", "salary" -> "avg"))
df.groupBy().agg(Map("age" -> "max", "salary" -> "avg"))
3、 agg(aggExpr: (String, String), aggExprs: (String, String)*)  返回dataframe型別 ,同數學計算求值
df.agg(Map("age" -> "max", "salary" -> "avg"))
df.groupBy().agg(Map("age" -> "max", "salary" -> "avg"))
4、 apply(colName: String) 返回column型別,捕獲輸入進去列的物件
5、 as(alias: String) 返回一個新的dataframe型別,就是原來的一個別名
6、 col(colName: String)  返回column型別,捕獲輸入進去列的物件
7、 cube(col1: String, cols: String*) 返回一個GroupedData型別,根據某些欄位來彙總
8、 distinct 去重 返回一個dataframe型別
9、 drop(col: Column) 刪除某列 返回dataframe型別
10、 dropDuplicates(colNames: Array[String]) 刪除相同的列 返回一個dataframe
11、 except(other: DataFrame) 返回一個dataframe,返回在當前集合存在的在其他集合不存在的
12、 explode[A, B](inputColumn: String, outputColumn: String)(f: (A) ⇒ TraversableOnce[B])(implicit arg0: scala.reflect.api.JavaUniverse.TypeTag[B]) 返回值是dataframe型別,這個 將一個欄位進行更多行的拆分
df.explode("name","names") {name :String=> name.split(" ")}.show();
將name欄位根據空格來拆分,拆分的欄位放在names裡面
13、 filter(conditionExpr: String): 刷選部分資料,返回dataframe型別 df.filter("age>10").show();  df.filter(df("age")>10).show();   df.where(df("age")>10).show(); 都可以
14、 groupBy(col1: String, cols: String*) 根據某寫欄位來彙總返回groupedate型別   df.groupBy("age").agg(Map("age" ->"count")).show();df.groupBy("age").avg().show();都可以
15、 intersect(other: DataFrame) 返回一個dataframe,在2個dataframe都存在的元素
16、 join(right: DataFrame, joinExprs: Column, joinType: String)
一個是關聯的dataframe,第二個關聯的條件,第三個關聯的型別:inner, outer, left_outer, right_outer, leftsemi
df.join(ds,df("name")===ds("name") and  df("age")===ds("age"),"outer").show();
17、 limit(n: Int) 返回dataframe型別  去n 條資料出來
18、 na: DataFrameNaFunctions ,可以呼叫dataframenafunctions的功能區做過濾 df.na.drop().show(); 刪除為空的行
19、 orderBy(sortExprs: Column*) 做alise排序
20、 select(cols:string*) dataframe 做欄位的刷選 df.select($"colA", $"colB" + 1)
21、 selectExpr(exprs: String*) 做欄位的刷選 df.selectExpr("name","name as names","upper(name)","age+1").show();
22、 sort(sortExprs: Column*) 排序 df.sort(df("age").desc).show(); 預設是asc
23、 unionAll(other:Dataframe) 合併 df.unionAll(ds).show();
24、 withColumnRenamed(existingName: String, newName: String) 修改列表 df.withColumnRenamed("name","names").show();
25、 withColumn(colName: String, col: Column) 增加一列 df.withColumn("aa",df("name")).show();

相關推薦

Spark dataframe建立&操作總結

DataFrame 的函式 Action 操作 1、 collect() ,返回值是一個數組,返回dataframe集合所有的行 2、 collectAsList() 返回值是一個Java型別的陣列,返回dataframe集合所有的行 3、 count() 返回一個num

spark dataframe建立操作

對spark進行操作 1獲取spark環境 JavaSparkContext getSparkContext 建立dataframe //獲取spark上下文資訊

培訓系列11-spark dataframe 基礎操作

// dataframe is the topic 一、獲得基礎資料。先通過rdd的方式獲得資料 val ny= sc.textFile("data/new_york/")val header=ny.firstval filterNY =ny.filter(listing=>{ listing.sp

Spark RDD建立操作

從集合建立RDD parallelize def parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T] 從一個Seq集合建立RDD

spark dataframe操作集錦(提取前幾行,合並,入庫等)

tex hang count() time cache height 以及 入庫 blank Spark dataframe派生於RDD類,但是提供了非常強大的數據操作功能。當然主要對類SQL的支持。 在實際工作中會遇到這樣的情況,主要是會進行兩個數據集的篩選、合並,重

[Spark][Python]DataFrame select 操作例子

pytho partition rac executor logs part ner man add [Spark][Python]DataFrame中取出有限個記錄的例子 的 繼續 In [4]: peopleDF.select("age")Out[4]: Data

[Spark][Python]DataFrame where 操作例子

frame .sh data mit spark dia where () limit [Spark][Python]DataFrame中取出有限個記錄的例子 的 繼續 [15]: myDF=peopleDF.where("age>21") In [16]: my

Spark SQL中Dataframe join操作含null值的列

dataframe util pre table log n-n dram blog between 當在Spark SQL中對兩個Dataframe使用join時,當作為連接的字段的值含有null值。由於null表示的含義是未知,既不知道有沒有,在SQL中null值與任何

sparkdataframe常見操作

all data 通過 sch 兩個 執行計劃 min 內存 就是 spark dataframe派生於RDD類,但是提供了非常強大的數據操作功能。當然主要對類SQL的支持。 在實際工作中會遇到這樣的情況,主要是會進行兩個數據集的篩選、合並,重新入庫。 首先加載數據

Spark Dataframe轉換/行動操作

疑惑 最近拋棄了RDD,開始使用Dataframe,主要還是因為使用資料庫的原因.在RDD中我們都知道惰性操作,知道RDD轉換操作和行動操作的區別,但是到了Dataframe中呢,Dataframe有自己的一系列方法,雖然是萬變不離其宗,Dataframe歸根結底是一種特殊的RDD,但是

Spark SQL 筆記(7)—— DataFrame API操作案例

1 測試資料 stu.txt 1|Anaa|111111|[email protected] 2|Bob|22222|[email protected] 3|Candy|333333

Java Spark建立RDD的兩種方式和操作RDD

首先看看思維導圖,我的spark是1.6.1版本,jdk是1.7版本  spark是什麼?  Spark是基於記憶體計算的大資料平行計算框架。Spark基於記憶體計算,提高了在大資料環境下資料處理的實時性,同時保證了高容錯性和高可伸縮性,允許使用者將Spark 部署在大量廉

Spark部分聚合操作的API總結

本文主要簡單的講講Spark幾個常用的聚合操作的API的使用和之間的一些區別。 建立一個JavaRDD和一個JavaPairRDD reduce 執行結果 reduceByKey

spark--DataFrame處理udf操作和一些聚合操作

在spark中對資料進行處理udf函式還是很多的下面介紹在df下udf操作例項 val sqlContext = new SQLContext(sc) import sqlContext.implicits._ 呼叫sqlcontext裡面的udf函式 sql

如何避免spark dataframe的JOIN操作之後產生重複列(Reference '***' is ambiguous問題解決)

spark datafrme提供了強大的JOIN操作。 但是在操作的時候,經常發現會碰到重複列的問題。如下: 如分別建立兩個DF,其結果如下: val df = sc.parallelize(Array(     ("one", "A", 1), ("one", "B

Pandas DataFrame 的常用操作總結

預備: 隨便搞一個DataFrame 出來先!!! import numpy as np import pandas as pd data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Ch

[2.2]Spark DataFrame操作(二)之通過反射實現RDD與DataFrame的轉換

參考 場景 檔案/home/pengyucheng/java/rdd2dfram.txt中有如下4條記錄: 1,hadoop,11 2,spark,7 3,flink,5 4,ivy,27 編碼實現:查詢並在控制檯打印出每行第三個欄位值大於7

spark.dataframe的一些常用操作(Scala)

前言 說起dataframe,大家一般會首先想起pandas.dataframe。隨著資料科學越來越火熱,大部分同學都使用過python去進行一些資料科學的實踐,也應該會對dataframe的簡單易用頗有好感。 然而pandas只能用於處理單機問題,面對工業級的海量資料處理和計算,就顯得

spark dataframe操作集錦(提取前幾行,合併,入庫等)

spark dataframe派生於RDD類,但是提供了非常強大的資料操作功能。當然主要對類SQL的支援。 在實際工作中會遇到這樣的情況,主要是會進行兩個資料集的篩選、合併,重新入庫。 首先載入資料集,然後在提取資料集的前幾行過程中,才找到limit的函式。 而合併就

c#多維陣列的建立操作 總結

1C#如何定義和使用多維陣列 不建議使用ArrayList,當數組裡的元素是值型別在操作的時候會出現大量的裝箱與拆箱步驟效能會損失許多,而是應該用什麼型別的元素建立什麼型別的陣列,除非你的元素有交叉或不確定才考慮採用ArrayList。 多維陣列定義如下: 陣列可以具有多個維度。例如,下列宣告建立一個