Spark SQL之DataSet
生活随笔
收集整理的這篇文章主要介紹了
Spark SQL之DataSet
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DataSet是分布式的數據集,是spark1.6才被添加進來的。比DataFrame出現的晚。DataSet支持lambda表達式,而且DataFrame的API在DataSet中大部分都可以繼續使用,相當于DataFrame的升級版。
Spark如何解析csv文件
待處理文件infos.txt,內容如下:
id,name,age 1,vincent,20 2,sarah,19 3,sofia,29 4,monica,26代碼如下:
package cn.ac.iie.sparkimport org.apache.spark.sql.SparkSession/*** DataSet 操作*/ object DataSetApp {def main(args: Array[String]): Unit = {val spark = SparkSession.builder().appName("DataFrameCase").master("local[2]").getOrCreate()// spark如何解析csv文件val df = spark.read.option("header", "true").option("inferSchema", "true").csv("file:///E:/test/infos.txt")df.show()// 注意需要導入隱式轉換import spark.implicits._val ds = df.as[Infos]ds.map(line => line.id).show()spark.close()}case class Infos(id: Int, name: String, age: Int)}靜態類型(Static-typing)和運行時類型安全(runtime type-safety)
Syntax Errors語法解析錯誤:編寫SQL時,是在運行時才解析SQL語句寫的對不對。
Analysis Errors對于分析錯誤:SQL也是在運行時才能知道是不是正確。
舉個栗子:
SQL語句是:select name from person;,當我們寫的時候單詞寫錯了寫成了:selcet name from peson;,那么這個SQL語句在編譯的時候是成功的,但是在執行過程中是錯誤的。
DataFrame:df.select("name")如果這句話寫錯成了df.selcet("name")那么編譯是不通過的。而寫錯成了df.select("nname")那么編譯時不通過。
DataSet:ds.map(line => line.name)如果寫成ds.map(line => line.nname)那么編譯是就不通過了。
總結
以上是生活随笔為你收集整理的Spark SQL之DataSet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SparkSQL之DataFrame案例
- 下一篇: SparkSQL之External Da