中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spark SQL中怎么創建DataFrames

發布時間:2022-01-14 17:22:37 來源:億速云 閱讀:210 作者:iii 欄目:開發技術

本篇內容主要講解“Spark SQL中怎么創建DataFrames”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spark SQL中怎么創建DataFrames”吧!

一、Spark SQL簡介

Spark SQL是Spark用來處理結構化數據的一個模塊,它提供了一個編程抽象叫做DataFrame并且作為分布式SQL查詢引擎的作用。

為什么要學習Spark SQL?我們已經學習了Hive,它是將Hive SQL轉換成MapReduce然后提交到集群上執行,大大簡化了編寫MapReduce的程序的復雜性,由于MapReduce這種計算模型執行效率比較慢。所以Spark SQL的應運而生,它是將Spark SQL轉換成RDD,然后提交到集群執行,執行效率非常快!同時Spark SQL也支持從Hive中讀取數據。

二、Spark SQL的特點

  • 無縫集成在Spark中,將SQL查詢與Spark程序混合。Spark SQL允許您使用SQL或熟悉的DataFrame API在Spark程序中查詢結構化數據。適用于Java、Scala、Python和R語言。

  • 提供統一的數據訪問,以相同的方式連接到任何數據源。DataFrames和SQL提供了一種訪問各種數據源的通用方法,包括Hive、Avro、Parquet、ORC、JSON和JDBC。您甚至可以通過這些源連接數據。

  • 支持Hive集成。在現有倉庫上運行SQL或HiveQL查詢。Spark SQL支持HiveQL語法以及Hive SerDes和udf,允許您訪問現有的Hive倉庫。

  • 支持標準的連接,通過JDBC或ODBC連接。服務器模式為業務智能工具提供了行業標準JDBC和ODBC連接。

三、核心概念:DataFrames和Datasets

  • DataFrame

DataFrame是組織成命名列的數據集。它在概念上等同于關系數據庫中的表,但在底層具有更豐富的優化。DataFrames可以從各種來源構建,例如:

  • 結構化數據文件

  • hive中的表

  • 外部數據庫或現有RDDs

DataFrame API支持的語言有Scala,Java,Python和R。

Spark SQL中怎么創建DataFrames

從上圖可以看出,DataFrame多了數據的結構信息,即schema。RDD是分布式的 Java對象的集合。DataFrame是分布式的Row對象的集合。DataFrame除了提供了比RDD更豐富的算子以外,更重要的特點是提升執行效率、減少數據讀取以及執行計劃的優化。

  • Datasets

Dataset是數據的分布式集合。Dataset是在Spark 1.6中添加的一個新接口,是DataFrame之上更高一級的抽象。它提供了RDD的優點(強類型化,使用強大的lambda函數的能力)以及Spark SQL優化后的執行引擎的優點。一個Dataset 可以從JVM對象構造,然后使用函數轉換(map, flatMap,filter等)去操作。 Dataset API 支持Scala和Java。 Python不支持Dataset API。

四、創建DataFrames

  • 測試數據如下:員工表

Spark SQL中怎么創建DataFrames

  • 定義case class(相當于表的結構:Schema)

case class Emp(empno:Int,ename:String,job:String,mgr:Int,hiredate:String,sal:Int,comm:Int,deptno:Int)
  • 將HDFS上的數據讀入RDD,并將RDD與case Class關聯

val lines = sc.textFile("hdfs://bigdata111:9000/input/emp.csv").map(_.split(","))
  • 把每個Array映射成一個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))
  • 生成DataFrame

val allEmpDF = emp.toDF
  • 通過DataFrames查詢數據

Spark SQL中怎么創建DataFrames

  • 將DataFrame注冊成表(視圖)

allEmpDF.createOrReplaceTempView("emp")
  • 執行SQL查詢

spark.sql("select * from emp").show

到此,相信大家對“Spark SQL中怎么創建DataFrames”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临潭县| 广丰县| 斗六市| 读书| 叶城县| 古蔺县| 威海市| 法库县| 自治县| 苍梧县| 定兴县| 宜宾市| 安溪县| 米泉市| 蕲春县| 吴旗县| 鄂伦春自治旗| 大渡口区| 安图县| 泗洪县| 万盛区| 阆中市| 雷山县| 五指山市| 普洱| 清水县| 天水市| 宣化县| 曲阳县| 吴堡县| 绥宁县| 广饶县| 枣庄市| 乌海市| 邻水| 民县| 教育| 莲花县| 邢台市| 北流市| 洞头县|