SparkSql
允許spark執行sql語句,hivesql,scala的描述的基于關系的查詢。其實是封裝了新的RDD-SchemaRDD,由行對象組成,有一個模式描述每列的資料類型。SchemaRDD與關系型資料庫的表很相似,可以通過存在的RDD/Parquet檔案/Json檔案/用Hive中的資料HiveSql建立。其中相關功能入口是SQLContext()及其子類。
如HiveContext可以用HiveQL分析器查詢通路HiveUDFs的能力、從Hive中讀取資料。SparkSQL的資料源相關操作可以通過SchemaRDD接口來操作,可以是被當作一般的RDD,也可以注冊成臨時表,在上面進行sql查詢。
有兩種建立SchemaRDD的方式,一是已經知道了模式,基于反射推斷。二是不知道模式,采取實作接口方法,構造一個模式。
或者
對于SparkSql的性能調優可以通過緩存資料和打開一些設定選項來調優。
如cacheTable緩存柱狀格式的表spark會隻浏覽需要的列并且自動的去壓縮資料減少記憶體的使用以及垃圾回收的壓力。uncacheTable()可以删除臨時表,spark.sql.inMemoryColumarStorage.compressed 基于資料的統計資訊每列自動的選擇一個壓縮算法,
spark.sql.inMemoryColumarStorage.batchSize柱狀緩存的批資料大小,越大的資料可以提高記憶體的使用率和壓縮效率,但是OOM是個問題啊,據說spark 2.0的鎢絲計劃會解決spark申請記憶體的管理問題。
2. 執行個體