開啟native查詢加速

更新時間:
Copy as MD

JindoTable通過Native Engine,支援對Spark、HivePrestoORCParquet格式檔案進行加速。本文為您介紹如何開啟native查詢加速,以提升Spark、HivePresto的效能。

前提條件

已建立叢集,且ORCParquet檔案已存放至JindoFSOSS,建立叢集詳情,請參見建立叢集

使用限制

  • 不支援對Binary類型檔案進行加速。

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

  • 不支援EMR-5.X系列及後續版本的E-MapReduce叢集。

  • 不支援代碼spark.read.schema(userDefinedSchema)。

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

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

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

    引擎

    ORC

    Parquet

    Spark2

    支援

    支援

    Spark3

    支援

    支援

    Presto

    支援

    支援

    Hive2

    不支援

    支援

    Hive3

    不支援

    支援

  • Spark、HivePresto服務支援的引擎和隱藏檔系統如下。

    引擎

    OSS

    JFS

    HDFS

    Spark2

    支援

    支援

    支援

    Presto

    支援

    支援

    支援

    Hive2

    支援

    支援

    不支援

    Hive3

    支援

    支援

    不支援

提升Spark效能

  1. 開啟JindoTable ORCParquet加速。

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

    • Spark讀取ORCParquet時,需要使用DataFrame API或者Spark-SQL。

    • 全域設定

      1. 進入詳情頁面。

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

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

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

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

      2. 修改配置。

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

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

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

      3. 儲存配置。

        1. 單擊保存

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

      4. 重啟ThriftServer。

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

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

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

    • Job層級設定

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

      --conf 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中的操作。在 Details for Query 10 頁面中,DAG 執行計畫顯示 JindoDataSourceV2Scan 掃描了 15.6 GB 資料(約 140 億行),經過濾後剩餘約 27 億行,最終通過 HashAggregate 彙總輸出 4,722 行,總耗時 2.3 分鐘。

提升Presto效能

重要

Presto查詢並發較高,且查詢加速使用堆外記憶體,因此使用查詢加速時記憶體配置必須大於10 GB。

因為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查詢加速。

您可以通過以下兩種方式提升Hive效能:

  • 控制台方式

    在控制台Hive服務的配置頁面,搜尋並修改自訂參數hive.jindotable.native.enabledtrue,儲存配置後,重啟服務使配置生效,此方式適用於Hive on MRHive on Tez。在 Hive 服務的配置頁簽中,在配置搜尋框中輸入 hive.jindotable.native.enabled,將該參數值設定為 true

  • 命令列方式

    您可以直接在命令列中設定hive.jindotable.native.enabledtrue來啟用查詢加速。因為EMR-3.35.0及後續版本已經內建JindoTable Parquet加速的外掛程式,所以您可以直接設定該參數。

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

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