Spark SQL是Spark用來處理結構化資料的一個模塊,它提供了一個編程抽象叫做DataFrame并且作為分布式SQL查詢引擎的作用,為什么要學習Spark SQL?如果大家了解Hive的話,應該知道它是將Hive SQL轉換成MapReduce然后提交到集群上執行,大大簡化了撰寫MapReduce的程式的復雜性,由于MapReduce這種計算模型執行效率比較慢,所以Spark SQL的應運而生,它是將Spark SQL轉換成RDD,然后提交到集群執行,執行效率非常快!同時Spark SQL也支持從Hive中讀取資料, Spark SQL也能自動決議JSON資料集的Schema,讀取JSON資料集為DataFrame格式,讀取JSON資料集方法為SQLContext.read().json(),該方法將String格式的RDD或JSON檔案轉換為DataFrame, 需要注意的是,這里的JSON檔案不是常規的JSON格式,JSON檔案每一行必須包含一個獨立的、自滿足有效的JSON物件,如果用多行描述一個JSON物件,會導致讀取出錯,
- 需要用到的測驗資料:people.json
{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}
- 定義路徑
val path ="/root/temp/people.json"
- 讀取Json檔案,生成DataFrame:
val peopleDF = spark.read.json(path)
- 列印Schema結構資訊
peopleDF.printSchema()
- 創建臨時視圖
peopleDF.createOrReplaceTempView("people")
- 執行查詢
spark.sql("SELECT name FROM people WHERE age=19").show

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19698.html
標籤:大數據
