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。
默認情況下,SparkContext對象在spark-shell啟動時用namesc初始化。
使用以下命令創建SQLContext。
例
讓我們考慮一個名為employeesee.json的JSON文件中的員工記錄示例。 使用以下命令創建DataFrame(df)並讀取名為employee.json的JSON文檔,並具有以下內容。
employee.json-將此文件放在currentscala>指針所在的目錄中。
DataFrame操作
DataFrame為結構化數據操作提供了一個領域特定的語言。 這裡,我們包括使用DataFrames的結構化數據處理的一些基本示例。
按照以下步驟執行DataFrame操作
閱讀JSON文檔
首先,我們要讀取JSON文檔。 基於此,生成名為(dfs)的DataFrame。
使用以下命令讀取JSON文檔namedemployee.json。 數據顯示為帶有字段id,name和age的表。
輸出:字段名稱從employee.json自動獲取。
顯示數據
如果你想看到的數據框的數據,然後使用以下命令。
輸出:您可以以表格格式查看員工數據。
使用方法printSchema
如果要查看DataFrame的Structure(Schema),請使用以下命令。
輸出:
使用選擇方法
使用以下命令從DataFrame的三個列中獲取fetchname-column。
輸出:您可以查看名稱列的值。
使用年齡過濾器
使用以下命令查找年齡大於23(age> 23)的僱員。
輸出
使用groupBy方法
使用以下命令計算同一年齡的員工人數。
輸出:這兩個僱員有23歲。
運行SQL查詢
SQLContext使應用程序能夠在運行SQL函數時以編程方式運行SQL查詢,並將結果作為DataFrame返回。通常,在後臺,SparkSQL支持兩種不同的方法將現有的RDD轉換為DataFrames
閱讀更多 會飛的魚go 的文章