1. 程式人生 > >[2] Getting Started With Data Reflections

[2] Getting Started With Data Reflections

Getting Started With Data Reflections

Why Data Reflections?

分析中通常涉及較大資料集和資源密集型的操作,資料分析和資料科學家需要較高效的互動式查詢來完成他們的分析工作,其中分析任務多是迭代關聯性的,每一步的操作都依賴於前一步驟的產出速度。Data Reflections 即為Dremio提供的高效獲取資料方法中的一種,創新性方法,獲取專利的一種加速資料提取技術.

How Data Reflections Work

Data Reflections 類似於關係資料庫中的索引(indexes),為Dremio的成本分析查詢優化器(cost-based query optimizer)有用資訊,使得Dremio獲得比將查詢下推到資料來源還要高效的的執行計劃(query plans)。Data Reflections管理優化近鄰於Dremio查詢執行引擎(query execution engine)的資料,其中利用到列存(columnarization)、壓縮(compression)、排序(sorting)、分割槽(partitioning)、聚合資料(aggregating data)。所有資料reflections持久化在Dremio的Reflection Store,Reflection Store對每一個部署是可配置的,如雲式儲存Amazon S3、 Hadoop’s HDFS, a NAS or SAN,甚至安裝在Dremio節點上附件本地儲存。

同關係資料庫索引相似,Data Reflections對端使用者不可見,使用者不必關聯不同的資料來源或者修改他們的查詢。使用者新增Data Reflections後,Dremio查詢計劃器(query planner)將自動使用這些Reflections,不存在使用者查詢行為的感知。

有兩種型別的Data Reflections:

  • Raw Reflections. 這可以利用與加速任何型別的查詢,允許使用者對給定資料來源的行列的子集(a subset of rows or columns)或者整個資料集(dataset)進行優化。

  • Aggregation Reflections. 這可以進一步加速包含聚合和分組操作(aggregations and group by operations)的BI型(BI-style)查詢,也可以配置作用於資料來源的行列的子集(a subset of rows or columns)

Creating A Raw Data Reflection

Add the Sample source in Dremio 在這裡插入圖片描述

選擇檢視SF_Incidents2016.json 在這裡插入圖片描述

更改日期型別為Date 在這裡插入圖片描述

另存為SFIncidents,到自己的工作空間 在這裡插入圖片描述

查詢

SELECT PdDistrict, DayOfWeek, Category, Resolution
FROM demo.SFIncidents
WHERE '2016-02-01' <= SFIncidents."Date" AND '2016-03-01' > SFIncidents."Date"

jobs中看具體執行詳情 在這裡插入圖片描述

顯示未被加速 在這裡插入圖片描述

設定raw reflection 在這裡插入圖片描述

在這裡插入圖片描述 在這裡插入圖片描述

小結

(1)A Raw Data Reflection 包含了原來資料來源的所有行列,但是通過Parquet儲存資料,將資料壓縮重組,同時將reflection和Dremio本地化,不必通過網路拉取資料。後面涉及原來資料來源的查詢,都會自動的修改執行計劃,查詢已預存好的reflection。 同時,如果另外一個查詢可以是該reflection可以涵蓋的,也會利用該reflection加速查詢,例如A資料來源存在一個reflectionA,有A衍生出的資料來源B是A的子集,關於B的查詢,也會利用到reflectionA。 (2)當存在多個reflection可能加速查詢時,執行計劃會依據cost演算法命中執行效率最高的reflection,如查詢需要對某個欄位排序,而如果存在一個reflection有該欄位的排序配置,該reflection可能優先被命中。

Exploring Aggregation Reflections

Aggregation Reflections與之類似,只是當存在Raw Reflections,構建Aggregation Reflections可以直接利用Raw Reflections,加速聚合提取資料的過程。Aggregation Reflections相當對計算指標做所選維度的grouping set。類似於kylin 預聚合。

Advanced Data Reflection Menus

高階選單中,可以對Reflections進行具體細節的加速配置,如

  • 為a raw reflection選擇columns子集,這在源表有很多列,而查詢只需要一個子集是有幫助。
  • 對reflection進行sort和partition配置,加速特定型別的查詢