【趙強老師】在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

 

相關文章
相關標籤/搜索