Spark SQL 數據幀

DataFrame是一個分佈式數據集合,它被組織成命名列。從概念上講,它相當於具有良好優化技術的關係表。

DataFrame可以從不同來源的數組構造,例如Hive表,結構化數據文件,外部數據庫或現有RDD。這個API是為現代大數據和數據科學應用程序設計的,從Python的R ProgrammingandPandas中的DataFrame中獲得靈感。

DataFrame的特性

下面是一些DataFrame的一些特徵:

能夠將單個節點集群上的大小為Kilobytes到Petabytes的數據處理為大型集群。

支持不同的數據格式(Avro,csv,彈性搜索和Cassandra)和存儲系統(HDFS,HIVE表,mysql等)。

通過Spark SQL Catalyst優化器(樹變換框架)的最先進的優化和代碼生成。

可以通過Spark-Core輕鬆地與所有大數據工具和框架集成。

提供用於Python,Java,Scala和R編程的API。

SQLContext

SQLContext是一個類,用於初始化Spark SQL的功能。初始化SQLContext類對象需要SparkContext類對象(sc)。

以下命令用於通過spark-shell初始化SparkContext。

Spark SQL 數據幀

默認情況下,SparkContext對象在spark-shell啟動時用namesc初始化。

使用以下命令創建SQLContext。

Spark SQL 數據幀

讓我們考慮一個名為employeesee.json的JSON文件中的員工記錄示例。 使用以下命令創建DataFrame(df)並讀取名為employee.json的JSON文檔,並具有以下內容。

employee.json-將此文件放在currentscala>指針所在的目錄中。

Spark SQL 數據幀

DataFrame操作

DataFrame為結構化數據操作提供了一個領域特定的語言。 這裡,我們包括使用DataFrames的結構化數據處理的一些基本示例。

按照以下步驟執行DataFrame操作

閱讀JSON文檔

首先,我們要讀取JSON文檔。 基於此,生成名為(dfs)的DataFrame。

使用以下命令讀取JSON文檔namedemployee.json。 數據顯示為帶有字段id,name和age的表。

Spark SQL 數據幀

輸出:字段名稱從employee.json自動獲取。

Spark SQL 數據幀

顯示數據

如果你想看到的數據框的數據,然後使用以下命令。

Spark SQL 數據幀

輸出:您可以以表格格式查看員工數據。

Spark SQL 數據幀

使用方法printSchema

如果要查看DataFrame的Structure(Schema),請使用以下命令。

Spark SQL 數據幀

輸出

Spark SQL 數據幀

使用選擇方法

使用以下命令從DataFrame的三個列中獲取fetchname-column。

Spark SQL 數據幀

輸出:您可以查看名稱列的值。

Spark SQL 數據幀

使用年齡過濾器

使用以下命令查找年齡大於23(age> 23)的僱員。

Spark SQL 數據幀

輸出

Spark SQL 數據幀

使用groupBy方法

使用以下命令計算同一年齡的員工人數。

Spark SQL 數據幀

輸出:這兩個僱員有23歲。

Spark SQL 數據幀

運行SQL查詢

SQLContext使應用程序能夠在運行SQL函數時以編程方式運行SQL查詢,並將結果作為DataFrame返回。通常,在後臺,SparkSQL支持兩種不同的方法將現有的RDD轉換為DataFrames

Spark SQL 數據幀


分享到:


相關文章: