以後介紹一些 我們可以透過 DataFrame 使用的API
我直接在 Spark-shell 環境作操作,基本上 Java環境操作 API的方式大同小異(前提是你得必須取得DataFrame物件)
1.取得 DataFrame on Spark-shell
請參考 Spark-shell with sqlContext to get database data
之前範例是取名叫 commits ,其實它就是 DataFrame的物件,現在改取名dataFrame比較好識別
2.dataFrame.count
計算你所連線 Table 的 row 筆數跟在DB執行 "Select count(*) from table" 一樣意思
從結果可以看出 該 Table 有 64筆資料
3. dataFrame.select("ColumnName")
and show(Integer) (#顯示前幾筆資料)
這個範例是同時示範 select & show : 顯示 該 column name 的 前二筆資料
4.dataFrame.distinct & first
distinct : 顯示 不為 null 的資料
first: 顯示第一筆資料
合在一起: 顯示第一筆不為空的資料
5.dataFrame.printSchema
列印出該 table 之 columnName
6.dataFrame.groupBy("columnName") & count & show
計算該欄位依值分成群組及計算筆數
可以看到我的欄位測試資料有一筆是 'H' ,60筆 'N',3筆 'Y'
所以該指令對於測試資料的內容可分出群組的欄位較有意義!
7.
重要!重要!重要!(很重要所以說三次)
使用 SQL Command 執行 Query
$ registerTempTable("定義TableName") & sqlContext.sql (Your SQL Command)
#這邊注意一下 registerTempTable 只是定義 tableName的名稱
實際上 我們在建立 dataFrame的時候已經指定了 Table,但是我們無法直接使用 SQL 語法
所以需要定義。
意即: 如果 dataFrame.registerTempTable("test_table")
然後執行 sqlContext.sql("select user_login_name from test_table where is_sys_admin='H'")
所得到的答案會是一樣的喔!^^"
今天就先簡單介紹到這邊嘍!