全部產品
Search
文件中心

E-MapReduce:開啟native查詢加速

更新時間:Jul 01, 2024

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

前提條件

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

背景資訊

Spark、Hive和Presto上服務支援的引擎和儲存格式如下所示。

引擎

ORC

Parquet

Spark2

支援

支援

Presto

支援

不支援

Hive2

不支援

支援

使用限制

  • 不支援Binary類型。

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

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

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

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

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

提升Spark效能

  1. 開啟JindoTable ORC或Parquet加速。

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

    • Spark調用讀取ORC或Parquet時,需要使用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. 在Spark的SQL頁面,查看執行任務。

      當出現JindoDataSourceV2Scan時,表示開啟成功。否則,請排查步驟1中的操作。check_Jindo

提升Presto效能

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

樣本如下。

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

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

提升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 MR和Hive on Tez。

程式碼範例如下。

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

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

全域設定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. 確認對話方塊中,單擊確定