全部產品
Search
文件中心

MaxCompute:本地模式

更新時間:Mar 13, 2026

MaxCompute Spark支援使用者使用原生的Spark本地模式,便於使用者進行小批量資料驗證和任務調試。本文以Spark 3.1為例介紹IDEA和Shell兩種使用方式。

使用IDEA調試

步驟一:下載並解壓Spark用戶端

  1. 點選連結或在終端輸入如下指令下載並解壓Spark用戶端,樣本為Spark3.1.1-odps0.47.0版本。

    wget https://odps-repo.oss-cn-hangzhou.aliyuncs.com/spark/3.1.1-odps0.47.0/spark-3.1.1-odps0.47.0-client.tar.gz
    tar zxvf spark-3.1.1-odps0.47.0-client.tar.gz
  2. 確認檔案位置並已正確下載解壓

    image

步驟二:建立並修改odps.conf設定檔

spark-3.1.1-odps0.47.0-client/conf下建立odps.conf檔案:

touch odps.conf
vim odps.conf

並在檔案中添加如下配置:

odps.project.name = [替換為實際project]
odps.end.point = [替換為實際endpoint]
odps.access.id = [替換為實際access id]
odps.access.key = [替換為實際access key]

步驟三:通過IDEA開啟樣本專案

  1. 在 IntelliJ IDEA 的歡迎介面,單擊倉庫複製,輸入倉庫地址https://github.com/aliyun/MaxCompute-Spark.git

    image

  2. IDEA可能會彈出安全提示,詢問是否信任此專案,點擊信任即可。

  3. 複製成功後,IDEA會自動開啟這個專案,但它開啟的是根目錄 MaxCompute-Spark。需要關閉當前專案,然後重新開啟正確的子目錄。

    1. 關閉當前專案:

      • 點擊 IDEA 功能表列的 File -> Close Project。回到 IDEA 歡迎介面。

    2. 開啟子目錄專案:

      • 在歡迎介面,點擊 Open

      • 在彈出的檔案瀏覽器中,導航至剛剛複製的檔案夾。

      • 進入這個 MaxCompute-Spark 檔案夾,然後選擇裡面的 spark-3.x 子目錄,點擊 Open

    image

步驟四:添加MaxCompute Spark Jars依賴

  1. 如圖所示,進入File > Project Structure

    image

  2. 如圖所示,左側選擇Modules,點擊+,添加JARs or Directories

    image

  3. 選擇步驟一中解壓的spark-3.1.1-odps0.47.0-client/jars目錄。

    image

  4. 在IDEA單擊OK,確認添加。

步驟五:添加ODPS_CONF_FILE環境變數

  1. 單擊IDEA右上方Edit Configurations

    image

  2. 配置環境變數

    image

  3. 添加ODPS_CONF_FILE,Name為ODPS_CONF_FILE,Value為步驟二建立的odps.conf檔案的位置。

    image

    單擊OK配置完成。

步驟六:運行任務JavaSparkSQL.java

  1. 在第48行添加如下代碼,配置為本地模式

    .config("spark.master","local[*]")

    image

  2. 在第113行添加如下代碼,手動添加分區。

    spark.sql("ALTER TABLE " + ptTableName + " ADD IF NOT EXISTS PARTITION (pt1='2018', pt2='0601')");

    image

  3. 注釋第118行代碼,本地模式暫不支援動態分區覆蓋。

    ptDf.write().mode("overwrite").insertInto(ptTableName); 

    image

  4. 單擊運行,返回結果如下:

    單擊展開查看詳情

    +-------+---+
    |   name|num|
    +-------+---+
    | name-0|  0|
    | name-1|  1|
    | name-2|  2|
    | name-3|  3|
    | name-4|  4|
    | name-5|  5|
    | name-6|  6|
    | name-7|  7|
    | name-8|  8|
    | name-9|  9|
    |name-10| 10|
    |name-11| 11|
    |name-12| 12|
    |name-13| 13|
    |name-14| 14|
    |name-15| 15|
    |name-16| 16|
    |name-17| 17|
    |name-18| 18|
    |name-19| 19|
    +-------+---+
    only showing top 20 rows

使用Shell調試

步驟一:下載並解壓Spark用戶端

  1. 點選連結或在終端輸入如下指令下載並解壓Spark用戶端,樣本為Spark3.1.1-odps0.47.0版本。

    wget https://odps-repo.oss-cn-hangzhou.aliyuncs.com/spark/3.1.1-odps0.47.0/spark-3.1.1-odps0.47.0-client.tar.gz
    tar zxvf spark-3.1.1-odps0.47.0-client.tar.gz
  2. 確認檔案位置並已正確下載解壓

    image

步驟二:建立並修改odps.conf設定檔

spark-3.1.1-odps0.47.0-client/conf下建立odps.conf檔案:

touch odps.conf
vim odps.conf

並在檔案中添加如下配置:

odps.project.name = [替換為實際project]
odps.end.point = [替換為實際endpoint]
odps.access.id = [替換為實際access id]
odps.access.key = [替換為實際access key]

步驟三:修改spark-defaults.conf設定檔

spark-3.1.1-odps0.47.0-client/conf下找到spark-defaults.conf檔案:

cd spark-3.1.1-odps0.47.0-client/conf
vim spark-defaults.conf

注釋掉以下配置
#spark.master = yarn
#spark.submit.deployMode = cluster
#spark.eventLog.enabled = true

添加配置
spark.master = local[*]

步驟四:添加HADOOP_CONF_DIR環境變數

export HADOOP_CONF_DIR=/PATH/TO/spark-3.1.1-odps0.47.0-client/conf

步驟五:開啟pyspark shell

cd spark-3.1.1-odps0.47.0-client
./bin/pyspark

執行成功示意圖如下:

image

步驟六:執行Spark SQL

查詢設定檔中填寫的MaxCompute專案記憶體在的表。

spark.sql("SELECT * FROM xxxx").show(); 

點擊展開查看樣本查詢詳情

spark.sql("SELECT * FROM emp").show();

// 返回結果
+-----+------+---------+----+-------------------+-------+-------+------+--------+
|empno| ename|      job| mgr|           hiredate|    sal|   comm|deptno|      ds|
+-----+------+---------+----+-------------------+-------+-------+------+--------+
| 7369| SMITH|    CLERK|7902|1980-12-17 00:00:00| 800.00|   null|    20|20251229|
| 7499| ALLEN| SALESMAN|7698|1981-02-20 00:00:00|1600.00| 300.00|    30|20251229|
| 7521|  WARD| SALESMAN|7698|1981-02-22 00:00:00|1250.00| 500.00|    30|20251229|
| 7566| JONES|  MANAGER|7839|1981-04-02 00:00:00|2975.00|   null|    20|20251229|
| 7654|MARTIN| SALESMAN|7698|1981-09-28 00:00:00|1250.00|1400.00|    30|20251229|
| 7698| BLAKE|  MANAGER|7839|1981-05-01 00:00:00|2850.00|   null|    30|20251229|
| 7782| CLARK|  MANAGER|7839|1981-06-09 00:00:00|2450.00|   null|    10|20251229|
| 7788| SCOTT|  ANALYST|7566|1987-04-19 00:00:00|3000.00|   null|    20|20251229|
| 7839|  KING|PRESIDENT|null|1981-11-17 00:00:00|5000.00|   null|    10|20251229|
| 7844|TURNER| SALESMAN|7698|1981-09-08 00:00:00|1500.00|   0.00|    30|20251229|
| 7876| ADAMS|    CLERK|7788|1987-05-23 00:00:00|1100.00|   null|    20|20251229|
| 7900| JAMES|    CLERK|7698|1981-12-03 00:00:00| 950.00|   null|    30|20251229|
| 7902|  FORD|  ANALYST|7566|1981-12-03 00:00:00|3000.00|   null|    20|20251229|
| 7934|MILLER|    CLERK|7782|1982-01-23 00:00:00|1300.00|   null|    10|20251229|
| 7948|JACCKA|    CLERK|7782|1981-04-12 00:00:00|5000.00|   null|    10|20251229|
| 7956| WELAN|    CLERK|7649|1982-07-20 00:00:00|2450.00|   null|    10|20251229|
| 7957|TEBAGE|    CLERK|7748|1982-12-30 00:00:00|1300.00|   null|    10|20251229|
+-----+------+---------+----+-------------------+-------+-------+------+--------+