Todos os produtos
Search
Central de documentação

MaxCompute:Conector do Spark

Última atualização: Aug 21, 2026

O armazenamento aberto do MaxCompute permite que o Spark use um conector para chamar a Storage API e ler dados diretamente do MaxCompute. Essa abordagem simplifica a leitura de dados e melhora o desempenho de acesso. A integração do Spark ao armazenamento de dados do MaxCompute oferece recursos eficientes, flexíveis e robustos de processamento e análise de dados.

Escopo

  • Ao acessar o MaxCompute com um mecanismo de terceiros:

    • É possível ler dados de tabelas padrão, tabelas particionadas, tabelas clusterizadas, Delta Tables e visualizações materializadas.

    • Não é possível ler dados de tabelas externas ou visualizações lógicas do MaxCompute.

  • O conector não suporta a leitura do tipo de dados JSON.

Procedimento

  1. Activate MaxCompute e crie um projeto do MaxCompute.

  2. Purchase an exclusive resource group for Data Transmission Service (subscription) .

  3. Implante um ambiente de desenvolvimento Spark.

    Clique em Spark para baixe um pacote do Spark das versões Spark 3.2.x - Spark 3.5.x e descompacte-o em uma pasta local.

    1. Para configure o ambiente de desenvolvimento Spark no sistema operacional Linux, consulte Build a Linux development environment.

    2. Para configure o ambiente de desenvolvimento Spark no sistema operacional Windows, consulte Build a Windows development environment.

  4. Baixe e compile o conector do Spark. Atualmente, apenas as versões do Spark de 3.2.x a 3.5.x são suportadas. Este tópico usa o Spark 3.3.1 como exemplo.

    Use o comando git clone para baixe o pacote do conector do Spark. Verifique se o Git está instale no ambiente. Caso contrário, ocorrerá um erro durante a execute do comando.

    ## Download the Spark connector.
    git clone https://github.com/aliyun/aliyun-maxcompute-data-collectors.git
    
    ## Switch to the spark-connector folder.
    cd aliyun-maxcompute-data-collectors/spark-connector 
    
    ## Compile the connector.
    mvn clean package
    
    ## Location of the datasource JAR package.
    datasource/target/spark-odps-datasource-3.3.1-odps0.43.0.jar
    
    ## Copy the datasource JAR package to the $SPARK_HOME/jars/ folder.
    cp datasource/target/spark-odps-datasource-3.3.1-odps0.43.0.jar $SPARK_HOME/jars/
  5. Configure as informações de acesso da conta do MaxCompute.

    Na pasta conf da instalação do Spark, crie um arquivo spark-defaults.conf:

    cd $SPARK_HOME/conf
    vim spark-defaults.conf

    Adicione as seguintes informações da conta ao arquivo spark-defaults.conf:

    ## Configure the account in spark-defaults.conf.
    spark.hadoop.odps.project.name=doc_test
    spark.hadoop.odps.access.id=L********************
    spark.hadoop.odps.access.key=*******************
    spark.hadoop.odps.end.point=http://service.cn-beijing.maxcompute.aliyun.com/api
    spark.hadoop.odps.tunnel.quota.name=ot_xxxx_p#ot_xxxx
    ## Configure the MaxCompute catalog.
    spark.sql.catalog.odps=org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog 
    spark.sql.extensions=org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions
  6. Acesse o MaxCompute pelo conector do Spark.

    1. Execute o seguinte comando na pasta bin da instalação do Spark para iniciar o cliente Spark SQL:

      cd $SPARK_HOME/bin
      spark-sql
    2. Consulte as tabelas no projeto do MaxCompute:

      SHOW tables in odps.doc_test;

      doc_test é um nome de projeto do MaxCompute de exemplo. Substitua-o pelo nome do seu projeto do MaxCompute.

    3. Crie uma tabela:

      CREATE TABLE odps.doc_test.mc_test_table (name STRING, num BIGINT);
    4. Leia os dados da tabela:

      SELECT * FROM odps.doc_test.mc_test_table;
    5. Crie uma tabela particionada:

       CREATE TABLE odps.doc_test.mc_test_table_pt (name STRING, num BIGINT) PARTITIONED BY (pt1 STRING, pt2 STRING);
    6. Leia os dados da tabela particionada:

      SELECT * FROM odps.doc_test.mc_test_table_pt;

      A saída retornada é:

      test1   1       2018    0601
      test2   2       2018    0601
      Time taken: 1.312 seconds, Fetched 2 row(s)
    7. Exclua a tabela:

      DROP TABLE IF EXISTS odps.doc_test.mc_test_table;