開啟native查詢加速

更新時間:
Copy as MD

JindoTable提供Native Engine,支援查詢加速。系統預設不開啟加速,開啟之後可以提升在Spark、HivePrestoORCParquet格式檔案的查詢速度。

前提條件

已建立EMR-3.35.0及後續版本或EMR-4.9.0及後續版本,且ORCParquet檔案已存放至JindoFSOSS,建立叢集詳情請參見建立叢集

背景資訊

Spark、HivePresto上服務支援的引擎和儲存格式如下。

引擎

ORC

Parquet

Spark2

支援

支援

Presto

支援

不支援

Hive2

不支援

支援

使用限制

  • 不支援Binary類型。

  • 不支援分區列儲存在檔案中的分區表。

  • 不支援EMR 5.X及後續版本的EMR叢集。

  • 不支援代碼spark.read.schema(userDefinedSchema),userDefinedSchema不同於檔案schema issue。

  • 支援Date類型區間為1400-01-019999-12-31。

  • 同一個表中查詢列不支援區分大小寫。例如,NAMEname兩個列在同一個表中無法使用查詢加速。

提升Spark效能

  1. 開啟JindoTable ORCParquet加速。

    說明
    • 因為查詢加速使用的是堆外記憶體,所以在Spark任務中建議添加配置--conf spark.executor.memoryOverhead=4g提高Spark申請額外資源用來進行加速。

    • Spark調用讀取ORCParquet時,需要使用native來啟用加速。

    • 全域設定

      詳細請參見全域設定Spark

    • Job層級設定

      使用spark-shell或者spark-sql時可以添加Spark的啟動參數。

      spark.sql.extensions==io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension

      作業詳情請參見Spark Shell作業配置Spark SQL作業配置

  2. 檢查開啟情況。

    1. 登入Spark History Server UI頁面。

    2. SparkSQL頁面,查看執行任務。

      當出現JindoDataSourceV2Scan時,表示開啟成功。否則,請排查步驟1中的操作。在 Spark SQL 頁面的 Details for Query 10 中,查詢耗時 2.3 min。DAG 執行計畫顯示 JindoDataSourceV2Scan 節點掃描了 15.6 GB 資料,讀取約 140 億行(read output rows 14,076,201,649),經過過濾後剩餘約 27 億行(filtered output rows 2,718,064,652),涉及 4,722 個分區;資料經 Project 節點流向 HashAggregate 節點,最終彙總輸出 4,722 行。

提升Presto效能

因為Presto已經內建JindoTable native加速的catalog: hive-acc,所以您可以直接使用catalog: hive-acc來啟用查詢加速。

樣本如下。

presto --server emr-header-1:9090 --catalog hive-acc --schema default
說明

目前使用Presto查詢加速功能時,暫不支援複雜資料類型,例如Map、StructArray。

提升Hive效能

重要

如果您對作業穩定性要求較高時,建議不要開啟native查詢加速。

因為EMR Hive 2.3.7(EMR-3.35.0)已經內建JindoTable Parquet加速的外掛程式,所以您可以直接設定hive.jindotable.native.enabled來啟用查詢加速,或者可以在控制台配置頁面的hive-site.xml頁簽,添加自訂參數hive.jindotable.native.enabledtrue,來開啟查詢加速並重啟Hive,此方式適用於Hive on MRHive on Tez。

程式碼範例如下。

set hive.jindotable.native.enabled=true;
說明

目前使用Hive查詢加速功能時,暫不支援複雜資料類型,例如Map、StructArray。

全域設定Spark

  1. 進入Spark頁面。

    1. 登入阿里雲E-MapReduce控制台

    2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    3. 單擊上方的集群管理頁簽。

    4. 集群管理頁面,單擊相應叢集所在行的详情

    5. 在左側導覽列,選擇集群服务 > Spark

  2. Spark服務頁面,單擊配置頁簽。

  3. 搜尋參數spark.sql.extensions,修改參數值為io.delta.sql.DeltaSparkSessionExtension,com.aliyun.emr.sql.JindoTableExtension

  4. 儲存配置。

    1. 單擊保存

    2. 确认修改對話方塊中,輸入执行原因,單擊确定

  5. 重啟ThriftServer。

    1. 在右上方選擇操作 > 重啟ThriftServer

    2. 執行叢集操作對話方塊中,輸入执行原因,單擊确定

    3. 确认對話方塊中,單擊确定