您好,登錄后才能下訂單哦!
本篇內容主要講解“Spark SQL中怎么創(chuàng)建DataFrames”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spark SQL中怎么創(chuàng)建DataFrames”吧!
Spark SQL是Spark用來處理結構化數(shù)據(jù)的一個模塊,它提供了一個編程抽象叫做DataFrame并且作為分布式SQL查詢引擎的作用。
為什么要學習Spark SQL?我們已經學習了Hive,它是將Hive SQL轉換成MapReduce然后提交到集群上執(zhí)行,大大簡化了編寫MapReduce的程序的復雜性,由于MapReduce這種計算模型執(zhí)行效率比較慢。所以Spark SQL的應運而生,它是將Spark SQL轉換成RDD,然后提交到集群執(zhí)行,執(zhí)行效率非???!同時Spark SQL也支持從Hive中讀取數(shù)據(jù)。
無縫集成在Spark中,將SQL查詢與Spark程序混合。Spark SQL允許您使用SQL或熟悉的DataFrame API在Spark程序中查詢結構化數(shù)據(jù)。適用于Java、Scala、Python和R語言。
提供統(tǒng)一的數(shù)據(jù)訪問,以相同的方式連接到任何數(shù)據(jù)源。DataFrames和SQL提供了一種訪問各種數(shù)據(jù)源的通用方法,包括Hive、Avro、Parquet、ORC、JSON和JDBC。您甚至可以通過這些源連接數(shù)據(jù)。
支持Hive集成。在現(xiàn)有倉庫上運行SQL或HiveQL查詢。Spark SQL支持HiveQL語法以及Hive SerDes和udf,允許您訪問現(xiàn)有的Hive倉庫。
支持標準的連接,通過JDBC或ODBC連接。服務器模式為業(yè)務智能工具提供了行業(yè)標準JDBC和ODBC連接。
DataFrame是組織成命名列的數(shù)據(jù)集。它在概念上等同于關系數(shù)據(jù)庫中的表,但在底層具有更豐富的優(yōu)化。DataFrames可以從各種來源構建,例如:
結構化數(shù)據(jù)文件
hive中的表
外部數(shù)據(jù)庫或現(xiàn)有RDDs
DataFrame API支持的語言有Scala,Java,Python和R。
從上圖可以看出,DataFrame多了數(shù)據(jù)的結構信息,即schema。RDD是分布式的 Java對象的集合。DataFrame是分布式的Row對象的集合。DataFrame除了提供了比RDD更豐富的算子以外,更重要的特點是提升執(zhí)行效率、減少數(shù)據(jù)讀取以及執(zhí)行計劃的優(yōu)化。
Dataset是數(shù)據(jù)的分布式集合。Dataset是在Spark 1.6中添加的一個新接口,是DataFrame之上更高一級的抽象。它提供了RDD的優(yōu)點(強類型化,使用強大的lambda函數(shù)的能力)以及Spark SQL優(yōu)化后的執(zhí)行引擎的優(yōu)點。一個Dataset 可以從JVM對象構造,然后使用函數(shù)轉換(map, flatMap,filter等)去操作。 Dataset API 支持Scala和Java。 Python不支持Dataset API。
測試數(shù)據(jù)如下:員工表
定義case class(相當于表的結構:Schema)
case class Emp(empno:Int,ename:String,job:String,mgr:Int,hiredate:String,sal:Int,comm:Int,deptno:Int)
將HDFS上的數(shù)據(jù)讀入RDD,并將RDD與case Class關聯(lián)
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查詢數(shù)據(jù)
將DataFrame注冊成表(視圖)
allEmpDF.createOrReplaceTempView("emp")
執(zhí)行SQL查詢
spark.sql("select * from emp").show
到此,相信大家對“Spark SQL中怎么創(chuàng)建DataFrames”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。