【趙強老師】在Spark SQL中讀取JSON文件


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM