全部產品
Search
文件中心

:Spark常見問題

更新時間:Sep 10, 2025

本文為您介紹使用Spark過程中的常見問題。

問題類別

常見問題

開發Spark

作業報錯

如何自檢專案工程?

建議您檢查如下內容:

  • 檢查pom.xml

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.binary.version}</artifactId>
        <version>${spark.version}</version>
        <scope>provided</scope> // spark-xxxx_${scala.binary.version} 依賴scope必須是provided。
    </dependency>
  • 檢查主類spark.master

    val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .config("spark.master", "local[4]") // 如果是以yarn-cluster方式提交,代碼中如果有local[N]的配置,將會報錯。
          .getOrCreate()
  • 檢查主類Scala代碼。

    object SparkPi { // 必須是object,如果在IDEA建立檔案的時候寫為class,main函數是無法載入的。
      def main(args: Array[String]) {
        val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .getOrCreate()
  • 檢查主類代碼配置。

    val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .config("key1", "value1")
          .config("key2", "value2")
          .config("key3", "value3")
          ...  // 如果執行local測試時,將MaxCompute配置在hard-code代碼裡,部分配置是無法生效的。
          .getOrCreate()
    說明

    建議您在使用yarn-cluster方式提交任務時,將配置項都寫在spark-defaults.conf中。

在DataWorks上運行ODPS Spark節點的步驟是什嗎?

  1. 在本地Python環境中編輯Spark代碼並打包。本地Python環境版本要求為Python 2.7。

  2. 上傳資源套件至DataWorks。詳情請參見建立並使用MaxCompute資源

  3. 在DataWorks上建立ODPS Spark節點。詳情請參見建立ODPS Spark節點

  4. 編寫代碼並運行節點,在DataWorks控制台上即可查看運行結果。

Spark on MaxCompute如何在本地進行調試?

您可以通過IntelliJ IDEA在本地進行調試。詳情請參見搭建Linux開發環境

如何通過Spark訪問VPC環境內的服務?

通過Spark訪問VPC環境內的服務資訊,請參見Spark訪問VPC執行個體

如何把JAR包當成資源來引用?

您可以通過參數spark.hadoop.odps.cupid.resources指定需要引用的資源。資源可以多重專案共用,建議您設定相關許可權確保資料安全。樣本如下。

spark.hadoop.odps.cupid.resources = projectname.xx0.jar,projectname.xx1.jar 

如何通過Spark傳入參數?

傳參詳情請參見Spark on DataWorks

如何將Spark流式讀取的DataHub資料寫入MaxCompute?

範例程式碼請參見DataHub

如何將開源Spark代碼遷移至Spark on MaxCompute?

您可以根據作業情境選擇的遷移方案如下:

  • 作業無需訪問MaxCompute表和OSS。

    您可以直接運行已有JAR包,詳情請參見搭建Linux開發環境。對於Spark或Hadoop的依賴必須設定為provided

  • 作業需要訪問MaxCompute表。

    配置相關依賴後重新打包,詳情請參見搭建Linux開發環境

  • 作業需要訪問OSS。

    擷取OSS所需要訪問的包並打通網路。完成後重新編譯打包應用即可部署運行,詳情請參見搭建Linux開發環境

如何通過Spark處理MaxCompute中的表資料?

Spark on MaxCompute支援Local、Cluster和DataWorks運行模式。三種模式的配置不同,詳情請參見運行模式

如何設定Spark資源並行度?

Spark 資源並行度由Executor數量和Executor CPU核心數共同決定,任務可並存執行的最大Task數量為Executor數量 * Executor CPU核心數

  • Executor數量

    • 參數:spark.executor.instances

    • 參數說明:設定作業申請的Executor數量。

  • Executor CPU核心數

    • 參數:spark.executor.cores

    • 參數說明:設定每個Executor進程的CPU核心數,決定每個Executor進程並存執行Task的能力,每個CPU核同一時間只能執行一個Task。通常Executor的CPU核心數設定為2~4較為合適。

如何解決記憶體不足問題?

  • 常見報錯:

    • java.lang.OutOfMemoryError: Java heap space

    • java.lang.OutOfMemoryError: GC overhead limit exceeded

    • Cannot allocate memory

    • The job has been killed by "OOM Killer", please check your job's memory usage

  • 解決方案:

    • 設定Executor記憶體。

      • 參數:spark.executor.memory

      • 參數說明:代表每個Executor的記憶體。通常與spark.executor.cores保持1:4設定即可,例如設定spark.executor.cores1spark.executor.memory4 GB。當Executor拋出java.lang.OutOfMemoryError異常時,需要調大該值。

    • 設定Executor堆外記憶體。

      • 參數:spark.executor.memoryOverhead

      • 參數說明:代表每個Executor的額外記憶體,主要用於JVM自身、字串、NIO Buffer等開銷。預設大小為spark.executor.memory * 0.1,最小384 MB。通常不需要額外設定,當Executor日誌出現Cannot allocate memory或OOM Killer報錯時,需要調大該值。

    • 設定Driver記憶體。

      • 參數:spark.driver.memory

      • 參數說明:代表Driver的記憶體大小。通常與spark.driver.cores保持1:4設定即可。當Driver需要Collect較巨量資料量,或拋出java.lang.OutOfMemoryError異常時,需要調大該值。

    • 設定Driver堆外記憶體。

      • 參數:spark.driver.memoryOverhead

      • 參數說明:代表Driver的額外記憶體。預設為大小spark.driver.memory * 0.1,最小384 MB。當Driver日誌出現Cannot allocate memory報錯,需要調大該值。

如何解決磁碟不足問題?

  • 問題現象

    出現報錯:No space left on device

  • 問題原因:該錯誤意味著本地磁碟不足,通常該報錯會在Executor中出現,並導致Executor退出。

  • 解決方案:

    • 增加磁碟大小

      • 參數:spark.hadoop.odps.cupid.disk.driver.device_size

      • 預設值:20 GB。

      • 參數說明:預設Driver和Executor各提供20GB的本地磁碟,當磁碟空間不足時可以適當調大該參數。注意該參數必須要配置在spark-defaults.conf或DataWorks的配置項中才會生效。

    • 增加Executor數量

      如果您調整本地磁碟大小到100GB以後,仍然報該錯誤,說明單個Executor Shuffle資料已經超過上限,可能是遇到了資料扭曲,這種情況下需要對資料重分區。也可能確實是資料量太大,那就需要調整spark.executor.instances參數,增加Executor的數量。

如何引用MaxCompute Project中的資源?

當前Spark on MaxCompute支援以下兩種方式來訪問MaxCompute中的資源:

  • 通過參數配置直接引用MaxCompute資源。

    • 參數:spark.hadoop.odps.cupid.resources

    • 參數格式:<projectname>.<resourcename>[:<newresourcename>]

    • 參數說明:該配置項指定了任務運行所需要的MaxCompute資源,詳情請參見資源操作。指定的資源將被下載到Driver和Executor的當前工作目錄。同一個任務可引用多個資源,資源之間用逗號分隔。資源下載到工作目錄後預設名字是<projectname>.<resourcename>,在配置時通過<projectname>.<resourcename>:<newresourcename>進行重新命名。需要注意該配置項必須要配置在spark-default.conf中或DataWorks的配置項中才會生效。

    • 樣本:

      ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
      
      ## 同時引用多個資源:同時引用public.python-python-2.7-ucs4.zip和public.myjar.jar
      spark.hadoop.odps.cupid.resources=public.python-python-2.7-ucs4.zip,public.myjar.jar
      
      ## 重新命名樣本:引用並將public.myjar.jar重新命名為myjar.jar
      spark.hadoop.odps.cupid.resources=public.myjar.jar:myjar.jar
  • 在DataWorks中引用資源。

    • 將MaxCompute中的資源添加至DataWorks資料開發面板的商務程序中,詳情請參見MaxCompute資源管理

    • 在DataWorks ODPS Spark節點中選擇jar、file、archive資源。

    說明

    該方案在任務運行時會上傳資源,對於較大資源建議採用方案一進行引用。

如何訪問VPC?

當前Spark on MaxCompute支援以下方式來訪問阿里雲VPC中的服務:

  • 通過ENI專線訪問

    • 使用限制

      通過ENI專線可以打通一個相同Region的VPC,如果您的作業需要同時訪問多個VPC,則可以將已經通過ENI專線打通的VPC與其他VPC之間再做打通。

    • 使用流程:

      1. 自助開通ENI專線,詳情請參見Spark訪問VPC執行個體

      2. 在要訪問的服務中添加白名單,授權代表MaxCompute的安全性群組(即上一步中提供的安全性群組)能訪問的具體連接埠。

        例如需要訪問阿里雲RDS,則需要在RDS中增加規則,允許第1步中建立的安全性群組訪問。如果使用者需要訪問的服務無法添加安全性群組,只能添加IP,那麼需要將第一步中所使用的vSwitch網段都添加進來。

      3. 作業配置spark.hadoop.odps.cupid.eni.infospark.hadoop.odps.cupid.eni.enable參數。

        使用樣本如下,需要把RegionID和VPCID替換為實際值。

        ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
        
        spark.hadoop.odps.cupid.eni.enable = true
        spark.hadoop.odps.cupid.eni.info = [regionid]:[vpcid]

如何訪問公網?

當前Spark on MaxCompute支援以下兩種方式來訪問公網服務:

  • 通過ENI專線訪問

    1. 自助開通ENI專線,詳情請參見Spark訪問VPC執行個體

    2. 確保專線VPC有訪問公網的能力,詳情請參見使用公網NAT GatewaySNAT功能訪問互連網

    3. 使用如下命令樣本配置Spark作業層級的公網訪問白名單以及ENI開關,需要把RegionID和VPCID替換為實際值。

       ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
      spark.hadoop.odps.cupid.internet.access.list=aliyundoc.com:443
      spark.hadoop.odps.cupid.eni.enable=true
      spark.hadoop.odps.cupid.eni.info=[region]:[vpcid]
  • 通過SmartNAT訪問

    使用限制:該方案不支援Spark 3.4及以上版本。

    假設需要訪問https://aliyundoc.com:443,流程如下。

    1. 您可以搜尋(DingTalk群號:11782920)加入MaxCompute開發人員社區釘群,聯絡MaxCompute支援人員團隊,將https://aliyundoc.com:443加入到odps.security.outbound.internetlist中。

    2. 使用如下命令樣本配置Spark作業層級的公網訪問白名單以及SmartNAT開關。

    3. ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
      spark.hadoop.odps.cupid.internet.access.list=aliyundoc.com:443
      spark.hadoop.odps.cupid.smartnat.enable=true

如何訪問OSS?

當前Spark on MaxCompute支援使用Jindo SDK來訪問阿里雲OSS,需要配置以下資訊:

  • 配置Jindo SDK及OSS Endpoint。

    命令樣本如下。

    ## 引用JindoSDK Jar。以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
    spark.hadoop.odps.cupid.resources=public.jindofs-sdk-3.7.2.jar
    
    ## 設定OSS實作類別。
    spark.hadoop.fs.AbstractFileSystem.oss.impl=com.aliyun.emr.fs.oss.OSS
    spark.hadoop.fs.oss.impl=com.aliyun.emr.fs.oss.JindoOssFileSystem
    
    ## 設定OSS Endpoint
    spark.hadoop.fs.oss.endpoint=oss-[YourRegionId]-internal.aliyuncs.com
    
    ## 通常無需設定OSS endpoint網路白名單,若作業運行過程中發現網路不通,可以通過以下參數添加白名單。
    ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
    spark.hadoop.odps.cupid.trusted.services.access.list=[YourBucketName].oss-[YourRegionId]-internal.aliyuncs.com
    說明

    在Spark on MaxCompute叢集模式運行時只支援OSS內網Endpoint,不支援外網Endpoint。OSS Region和Endpoint映射請參見OSS地區和訪問網域名稱

  • 配置OSS鑒權資訊,當前Jindo SDK支援以下兩種方式鑒權。

    • 使用AccessKey鑒權,配置樣本如下:

      val conf = new SparkConf()
        .setAppName("jindo-sdk-demo")
        # 配置access-key鑒權參數
        .set("spark.hadoop.fs.oss.accessKeyId", "<YourAccessKeyId>")
        .set("spark.hadoop.fs.oss.accessKeySecret", "<YourAccessKeySecret>")
    • 使用STS Token鑒權,使用流程如下:

      1. 單擊一鍵授權,將當前雲帳號的OSS資源通過StsToken的方式授權給MaxCompute專案直接存取。

        說明

        當MaxCompute的ProjectOwner為OSS雲帳號時,才可以執行一鍵授權。

      2. 配置開啟本地HTTP服務。

        命令樣本如下。

        ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
        spark.hadoop.odps.cupid.http.server.enable = true
      3. 配置鑒權資訊。

        命令樣本如下。

        val conf = new SparkConf()
          .setAppName("jindo-sdk-demo")
          # 配置雲端服務角色鑒權
          # ${aliyun-uid}是阿里雲使用者UID
          # ${role-name}是角色名稱
          .set("spark.hadoop.fs.jfs.cache.oss.credentials.provider", "com.aliyun.emr.fs.auth.CustomCredentialsProvider")
          .set("spark.hadoop.aliyun.oss.provider.url", "http://localhost:10011/sts-token-info?user_id=${aliyun-uid}&role=${role-name}")

如何引用Python三方庫?

  • 問題現象:PySpark作業運行時拋出No module named 'xxx'異常。

  • 問題原因:PySpark作業依賴Python第三方庫,在當前MaxCompute平台預設的Python環境中尚未安裝。

  • 解決方案:您可以採用以下幾種方案添加第三方庫依賴。

    • 直接使用MaxCompute Python公用環境。

      您只需要在DataWorks配置項或spark-defaults.conf檔案中添加以下配置即可,不同Python版本配置如下:

      • Python 2配置

        ## Python 2.7.13 配置
        ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
        spark.hadoop.odps.cupid.resources = public.python-2.7.13-ucs4.tar.gz
        spark.pyspark.python = ./public.python-2.7.13-ucs4.tar.gz/python-2.7.13-ucs4/bin/python
        
        ## 三方庫列表
        https://odps-repo.oss-cn-hangzhou.aliyuncs.com/pyspark/py27/py27-default_req.txt
      • Python 3配置

        ## Python 3.7.9 配置
        ## 以下配置必須在DataWorks配置項/spark-defaults.conf檔案中添加
        spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz
        spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3
        
        ## 三方庫列表
        https://odps-repo.oss-cn-hangzhou.aliyuncs.com/pyspark/py37/py37-default_req.txt
    • 上傳單個WHEEL包。

      該方案適用於Python三方依賴數量較少、較為簡單的情況,命令樣本如下。

      ##需要將wheel包重新命名為zip包,例如將pymysql的wheel包重新命名為pymysql.zip
      ##將重新命名後的zip包上傳(檔案類型為archive)
      ##在Dataworks spark節點引用該zip包(archive類型)
      ##在spark-defaults.conf或dataworks配置項中添加以下配置後即可import
      ## 配置
      spark.executorEnv.PYTHONPATH=pymysql
      spark.yarn.appMasterEnv.PYTHONPATH=pymysql
      
      ## 上傳代碼
      import pymysql
    • 上傳完整自訂Python環境。

      適用於依賴較為複雜或需要自訂Python版本的情況。您需利用Docker容器打包並上傳完整Python環境,詳情請參見Package依賴

如何解決Jar依賴衝突問題?

  • 問題現象:運行時拋出NoClassDefFoundError或NoSuchMethodError異常。

  • 問題原因:通常是由於Jar包中的第三方依賴與Spark依賴版本衝突,需要檢查上傳的主Jar包及第三方依賴庫,排除衝突的依賴。

  • 解決方案:

    • Pom自檢。

      • 將Spark社區版依賴設定為Provided。

      • 將Hadoop社區版依賴設定為Provided。

      • 將Odps/Cupid依賴設定為Provided。

    • 排除衝突的依賴。

    • 使用maven-shade-plugin relocation解決包衝突。

如何使用Local模式進行調試?

  • Spark 2.3.0

    1. 在spark-defaults.conf中添加以下配置。

      spark.hadoop.odps.project.name =<Yourprojectname>
      spark.hadoop.odps.access.id =<YourAccessKeyID>
      spark.hadoop.odps.access.key =<YourAccessKeySecret>
      spark.hadoop.odps.end.point =<endpoint>
    2. 使用Local模式運行任務。

      ./bin/spark-submit --master local spark_sql.py
  • Spark 2.4.5/Spark 3.1.1

    1. 建立odps.conf檔案,並在檔案中添加以下配置。

      odps.access.id=<YourAccessKeyID>
      odps.access.key=<YourAccessKeySecret>
      odps.end.point=<endpoint>
      odps.project.name=<Yourprojectname>
    2. 添加環境變數指向odps.conf檔案位置。

      export ODPS_CONF_FILE=/path/to/odps.conf
    3. 使用Local模式運行任務。

      ./bin/spark-submit --master local spark_sql.py
  • 常見報錯

    • 報錯1:

      • 報錯資訊:

        • Incomplete config, no accessId or accessKey

        • Incomplete config, no odps.service.endpoint

      • 報錯原因:在Local模式開啟了EventLog。

      • 解決方案:將spark-defaults.conf中的spark.eventLog.enabled=true參數刪除即可。

    • 報錯2:

      • 報錯資訊:Cannot create CupidSession with empty CupidConf

      • 報錯原因:Spark 2.4.5或Spark 3.1.1 無法讀取odps.access.id等資訊。

      • 解決方案:建立odps.conf檔案,並添加環境變數後再運行任務

    • 報錯3:

      • 報錯資訊:java.util.NoSuchElementException: odps.access.id

      • 報錯原因:Spark 2.3.0 無法讀取odps.access.id等資訊。

      • 解決方案:在spark-defaults.conf中添加spark.hadoop.odps.access.id等配置資訊。

運行Spark作業時,報錯User signature does not match,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    Stack:
    com.aliyun.odps.OdpsException: ODPS-0410042:
    Invalid signature value - User signature does not match
  • 產生原因

    身分識別驗證未通過,AccessKey ID或AccessKey Secret有誤。

  • 解決措施

    請檢查spark-defaults.conf提供的AccessKey ID、AccessKey Secret和阿里雲官網控制台使用者資訊管理中的AccessKey IDAccessKey Secret是否一致,如果不一致,請修改一致。

運行Spark作業時,報錯You have NO privilege,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    Stack:
    com.aliyun.odps.OdpsException: ODPS-0420095: 
    Access Denied - Authorization Failed [4019], You have NO privilege 'odps:CreateResource' on {acs:odps:*:projects/*}
  • 產生原因

    許可權不足,需要申請許可權。

  • 解決措施

    需要由專案所有者授予Resource的Read和Create許可權。更多授權資訊,請參見MaxCompute許可權

運行Spark作業時,報錯Access Denied,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    Exception in thread "main" org.apache.hadoop.yarn.exceptions.YarnException: com.aliyun.odps.OdpsException: ODPS-0420095: Access Denied - The task is not in release range: CUPID
  • 產生原因

    • 原因一:Spark-defaults.conf中配置的AccessKey ID、AccessKey Secret不正確。

    • 原因二:專案所在的地區未提供Spark on MaxCompute服務。

  • 解決措施

    • 原因一的解決措施:檢查Spark-defaults.conf配置資訊,修改為正確的AccessKey ID、AccessKey Secret。更多資訊,請參見搭建Linux開發環境

    • 原因二的解決措施:確認專案所在的地區是否已經提供了Spark on MaxCompute服務或加入DingTalk群21969532(Spark on MaxCompute支援群)諮詢。

運行Spark作業時,報錯No space left on device,如何解決?

Spark使用網盤進行本機存放區。Shuffle資料和BlockManager溢出的資料均儲存在網盤上。網盤的大小通過spark.hadoop.odps.cupid.disk.driver.device_size參數控制,預設為20 GB,最大為100 GB。如果調整到100 GB仍然報此錯誤,需要分析具體原因。常見原因為資料扭曲,在Shuffle或者Cache過程中資料集中分布在某些Block。此時可以縮小單個Executor的核心數(spark.executor.cores),增加Executor的數量(spark.executor.instances)。

運行Spark作業時,報錯Table or view not found,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    Table or view not found:xxx
  • 產生原因

    • 原因一:表或視圖不存在。

    • 原因二:開啟了Hive的catalog配置。

  • 解決措施

    • 原因一的解決措施:請建立表。

    • 原因二的解決措施:去掉catalog配置。報錯樣本如下,需要去掉enableHiveSupport()

      spark = SparkSession.builder.appName(app_name).enableHiveSupport().getOrCreate()

運行Spark作業時,報錯Shutdown hook called before final status was reported,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    App Status: SUCCEEDED, diagnostics: Shutdown hook called before final status was reported.
  • 產生原因

    提交到叢集的user main沒有通過AM(ApplicationMaster)申請叢集資源。例如,使用者沒有建立SparkContext或使用者在代碼中設定spark.master為local。

運行Spark作業時,發生JAR包版本衝突類錯誤,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    User class threw exception: java.lang.NoSuchMethodError
  • 產生原因

    JAR包版本衝突或類錯誤。

  • 解決措施

    1. $SPARK_HOME/jars路徑下找出異常類所在的JAR,並執行如下命令定位第三方庫的座標以及版本。

      grep <異常類類名> $SPARK_HOME/jars/*.jar
    2. 在Spark作業根目錄下,執行如下命令查看整個工程的所有依賴。

      mvn dependency:tree
    3. 找到對應的依賴後,執行如下命令排除衝突包。

      maven dependency exclusions
    4. 重新編譯並提交代碼。

運行Spark作業時,報錯ClassNotFound,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    java.lang.ClassNotFoundException: xxxx.xxx.xxxxx
  • 產生原因

    類不存在或依賴配置錯誤。

  • 解決措施

    1. 執行如下命令查看您提交的JAR包中是否存在該類定義。

      jar -tf <作業JAR包> | grep <類名稱>
    2. 檢查pom.xml檔案中的依賴是否正確。

    3. 使用Shade方式提交JAR包。

運行Spark作業時,報錯The task is not in release range,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    The task is not in release range: CUPID
  • 產生原因

    專案所在地區未開通Spark on MaxCompute服務。

  • 解決措施

    請您選擇已經開啟Spark on MaxCompute服務的地區使用。

運行Spark作業時,報錯java.io.UTFDataFormatException,如何解決?

  • 問題現象

    運行Spark作業時,返回報錯如下。

    java.io.UTFDataFormatException: encoded string too long: 2818545 bytes 
  • 解決措施

    調整spark-defaults.confspark.hadoop.odps.cupid.disk.driver.device_size參數的值。預設為20 GB,最大支援100 GB。

運行Spark作業時,列印的中文亂碼,如何解決?

您需要添加如下配置。

"--conf" "spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
"--conf" "spark.driver.extraJavaOptions=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

Spark調用外網第三方任務時報錯,如何解決?

Spark不能直接調用外網第三方任務,網路不通。

您可以在VPC中搭建Nginx反向 Proxy,通過代理訪問外網。Spark支援直接存取VPC,詳情請參見Spark訪問VPC執行個體