spark學習 6 之SparkSQL基礎

2021-10-16 05:16:53 字數 3342 閱讀 5872

一、spark sql的基礎:

1、spark sql的簡介

spark sql is apache spark』s module for working with structured data

spark sql 是apache spark用來出來結構化資料的模組

特點:(1)容易整合成,安裝好spark後就帶有spark sql了

(2)統一的資料訪問介面dataframe

(3)相容hive

(4)支援標準的資料訪問方式:jdbc,odbc

2、sparksql的核心資料模型是dataframe:它的表現形式其實也是rdd

表(dataframe) = 表結構(schema) + 資料(rdd)

3、建立dataframe:dataframe僅支援dsl語句

(1)樣本類case class

示例(使用員工表):

a、建立樣本型別

case class emp(empno:int,ename:string,job:string,mgr:int,hiredate:string,sal:int,comm:int,deptno:int)

返回乙個defined class emp表示這個類已經定義好了

b、 讀一乙個資料(我們可以從hdfs上讀取,因為是示例所以我們直接本地檔案上讀取了)

val lines=sc.

textfile

("/root/training/emp.csv").

map(_.

split

(","

))

我們可以看到rdd裡邊是乙個陣列型別

c、把陣列型別的rdd對映成rdd[emp]

val emp=lines.

map(x=

>

emp(x(

0).toint,x(

1),x

(2),

x(3)

.toint,x(

4),x

(5).toint,x(

6).toint,x(

7).toint)

)

d、轉化成spark sql的核心資料模型dataframe

val df=emp.todf
然後我們可以檢視表結構,可以使用dsl語句操作dataframe

//檢視表結構

查詢所有的資料

也可查詢具體的幾個字段

4、建立檢視(要用到sparksession物件)

在sparkshell客戶端開啟的時候就自動建立了倆個物件,乙個sparkcontext物件叫sc,乙個是sparksession物件叫spark

建立檢視是為了我們使用標準的sql語句來操作dataframe,因為dataframe僅支援dsl語句,所以我們需要把dataframe轉換成檢視來用標準語句進行操作。

檢視又分為區域性檢視和全域性檢視

區域性檢視:僅在當前session中有效

全域性檢視:可以在不同的session中訪問,單獨建立在global_temp的命名空間中

df.df.

createglobaltempview

("emp2"

)

但是這裡查詢語句稍微和區域性檢視有點區別,因為他是建立在global_temp命名空間下的

我們先看一下異常語句

spark.

sql(

"select * from emp2"

).show

org.apache.spark.sql.analysi***ception: table or view not found: emp2; line 1 pos 14

他就會報乙個這樣的錯,這是我們寫的sql語句的問題

這樣就正常了。然後我們看看區域性檢視和全域性檢視的區別,然後我們在當前spark-shell下重新的開啟乙個session

spark.newsession.

sql(

"select * from emp1"

).show

我們執行區域性檢視的語句的時候就會出現這樣的錯誤

然後我們新開個session執行全域性檢視查詢

這回就正常了

spark學習筆記6

pyspark.sql.dataframe物件的方法 aggr sparkdf.agg 對列的聚合操作 print aggr.collect print sparkdf.colregex w spark version 2.3 選擇列名符合正規表示式的列 print sparkdf.columns ...

Spark學習(一)之Spark初識

1.spark歷史及簡介 spark是乙個實現快速通用的集群計算平台。它是由加州大學伯克利分校amp實驗室 開發的通用記憶體平行計算框架,用來構建大型的 低延遲的資料分析應用程式。它擴充套件了廣泛使用的mapreduce計算模型。12年正式開源,距今6年歷史。spark執行架構的設計 cluster...

Spark學習之 Spark SQL 一

感謝大牛的系列文章,本文只是本人學習過程的記錄,首先向大神致敬 1.建立檔案people.json 2.上傳到hdfs檔案系統 目錄位置 data people.json hdfs dfs put people.json data3.在hdfs中檢視檔案是否完整,如下 root hd 02 hdfs...