全部產品
Search
文件中心

E-MapReduce:體驗Serverless Spark x Paimon(DLF)TPC-DS效能

更新時間:Jan 17, 2026

TPC-DS是巨量資料領域最為知名的Benchmark標準。阿里雲當前EMR Serverless Spark 已登頂全球 TPC-DS 100TB 榜單。本文介紹如何在Serverless Spark結合DLF完整運行TPC-DS的99個SQL,並得到最佳的效能體驗。

前提條件

已經通過共用TPC-DS標準範例資料集建立DLF Catalog,詳情請參見共用範例資料集

  • 子帳號預設不具備DLF任何許可權,需要授予相應的操作許可權,詳情請參見快速配置許可權

  • 資料共用目錄提供了多種規格的 TPC-DS 標準範例資料庫,適用於不同規模的資料測試、分析及基準效能評估。具體包含以下資料集:

    範例資料庫名稱

    範例資料說明

    適用情境

    tpcds_paimon_sf1

    TPC-DS 1G Paimon 表

    快速驗證、開發測試

    tpcds_paimon_sf2

    TPC-DS 2G Paimon 表

    中等測試、學習

    tpcds_paimon_sf10

    TPC-DS 10G Paimon 表

    效能測試、壓測

    tpcds_paimon_sf100

    TPC-DS 100G Paimon 表

    生產級 benchmark、效能對比

建立工作空間並綁定DLF Catalog

  1. 進入EMR Serverless Spark頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. 在頂部功能表列處,根據實際情況選擇地區。

      重要

      建立工作空間後,不能更改地區。

  2. 單擊建立工作空間

  3. 在E-MapReduce Serverless Spark頁面,完成相關配置。開啟DLF作為中繼資料服務的開關,資料目錄選擇前提條件中根據共用資料集建立的DLF Catalog。其餘配置說明請參見建立工作空間

說明

建立工作空間時,已準備建立工作空間所需的帳號並授權:

  • 使用阿里雲主帳號建立,授權詳情請參見阿里雲帳號角色授權

  • 如果使用RAM使用者(子帳號)或RAM角色建立,請確保已授權該RAM使用者或RAM角色AliyunEMRServerlessSparkFullAccessAliyunOSSFullAccessAliyunDLFFullAccess權限原則。然後,在EMR Serverless Spark的存取控制頁面添加該RAM使用者或RAM角色,並授予管理員角色,詳情請參見RAM使用者授權系統管理使用者和角色

測試過程

步驟一:上傳JAR包

  1. 單擊spark-tpcds-test.jar,直接下載測試JAR包。

    說明

    spark-tpcds-test.jar基於spark-sql-perf修改而來,針對Serverless Spark情境進行了適配,能夠完整運行TPC-DS的99個SQL。spark-sql-perf是Databricks開源的Spark SQL效能測試架構,提供TPC-DS基準測試能力。

  2. 進入資源上傳頁面。

    1. 登入E-MapReduce控制台

    2. 在左側導覽列,選擇EMR Serverless > Spark

    3. Spark頁面,單擊目標工作空間名稱。

    4. 在EMR Serverless Spark頁面,單擊左側導覽列中的檔案管理

  3. 檔案管理頁面,單擊上傳檔案

  4. 上傳檔案對話方塊中,單擊待上傳檔案地區選取項目本地JAR包,或者直接拖拽JAR包到待上傳檔案地區。

    本文樣本是上傳spark-tpcds-test.jar。

步驟二:執行測試

  1. 在EMR Serverless Spark頁面,單擊左側的資料開發

  2. 開發目錄頁簽下,單擊image表徵圖。

  3. 輸入名稱,類型選擇批任務 > JAR,然後單擊確定

  4. 在右上方選擇隊列。

    添加隊列的具體操作,請參見管理資源隊列

  5. 在建立的任務開發中,配置以下資訊,其餘參數無需配置,然後單擊運行

    參數

    說明

    主jar資源

    選擇前一個步驟中上傳的JAR包。本文樣本是spark-tpcds-test.jar。

    引擎版本

    推薦選擇最新版本,如esr-4.6.0。

    Fusion加速

    開啟

    Main Class

    com.serverlessspark.tpcds.SparkTPCDS

    運行參數

    --database tpcds_paimon_sf100

    說明

    --database:用於測試的資料庫名稱,您可以根據需要調整測試所使用的資料庫。資料庫名稱可在Serverless Spark資料目錄中查看。

    資源配置

    按照下述配置任務預計消耗132CU/小時:

    spark.driver.cores   4
    spark.driver.memory  14G
    
    spark.executor.cores  4 
    spark.executor.memory  14G
    spark.executor.instances 32
    
    spark.driver.memoryOverhead  2g
    spark.executor.memoryOverhead  2g

    Spark配置

    展開自訂配置,在Spark配置中加入下述配置:

    spark.gluten.sql.columnar.backend.velox.resizeBatches.shuffleInput  false
    spark.gluten.sql.columnar.backend.velox.SplitPreloadPerDriver  2
    spark.gluten.sql.columnar.backend.velox.IOThreads   16
    spark.hadoop.fs.oss.mt-read.enable                  true
    spark.hadoop.fs.oss.mt-read.threads                 16
    spark.hadoop.fs.emr.loadQuantum                     8388608
    spark.sql.shuffle.partitions                        400
    spark.sql.cbo.enabled                               true
    spark.sql.files.maxPartitionBytes                   512m
    spark.default.parallelism                           200
    spark.locality.wait                                 0s
    spark.sql.crossJoin.enabled                         true
    spark.sql.adaptive.localShuffleReader.enabled       true
    spark.sql.fuse.unionAllOnJoin.enabled               true
    spark.sql.optimizer.runtime.bloomFilter.enabled     true
    spark.sql.optimizer.enableMergeScalarAggsInInnerJoin  true
    spark.sql.optimizer.pushdownAggregateBelowJoin      true
    spark.sql.optimizer.inferDistinctFromIntersect      true
    spark.sql.optimizer.groupSplitsByLocation           false
    spark.sql.adaptive.amend.join.selection.enabled     true
    spark.sql.mergeScalaSubquery.pullupAggFilter        true
    spark.sql.execution.optimizeExpand                  true
    spark.sql.execution.optimizeExpand.ratio            5
    spark.sql.legacy.ctePrecedencePolicy                LEGACY
    spark.sql.auto.reused.cte.enabled                   true
    spark.sql.auto.clear.cte.cache.enabled              true
    spark.locality.wait.node                            0s
    spark.sql.sources.ignoreDataLocality                true
    spark.shuffle.manager org.apache.spark.shuffle.sort.ColumnarShuffleManager
    spark.celeborn.client.adaptive.optimizeLocalShuffleRead.enabled  true

步驟三:查看結果

運行任務後,在下方的運行記錄地區,單擊任務操作列的日誌探查,您可以查看相關的日誌資訊。

您也可以進入營運中心的任務歷史頁面,查看任務的執行情況。

image