Todos los productos
Search
Centro de documentos

MaxCompute:Conector de Spark

Última actualización: Sep 07, 2026

El almacenamiento abierto de MaxCompute permite que Spark use un conector para llamar a la Storage API y leer datos directamente desde MaxCompute. Este enfoque simplifica el proceso de lectura de datos y mejora el rendimiento de acceso. La integración de Spark con el almacenamiento de datos de MaxCompute ofrece capacidades eficientes, flexibles y potentes para procesar y analizar información.

Alcance

  • Cuando un motor de terceros accede a MaxCompute:

    • Es posible leer datos de tablas estándar, tablas particionadas, tablas agrupadas (clustered), Delta Tables y vistas materializadas.

    • No es posible leer datos de tablas externas ni de vistas lógicas de MaxCompute.

  • El conector no admite la lectura del tipo de datos JSON.

Procedimiento

  1. Activate MaxCompute y create a MaxCompute project.

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

  3. Despliegue un entorno de desarrollo de Spark.

    Haga clic en Spark para descargar un paquete de Spark correspondiente a las versiones Spark 3.2.x - Spark 3.5.x y, a continuación, descomprima el paquete en una carpeta local.

    1. Para construir el entorno de desarrollo de Spark en un sistema operativo Linux, consulte Build a Linux development environment.

    2. Para construir el entorno de desarrollo de Spark en un sistema operativo Windows, consulte Build a Windows development environment.

  4. Descargue y compile el conector de Spark. Actualmente, solo se admiten las versiones de Spark de la 3.2.x a la 3.5.x. En este tema se usa Spark 3.3.1 como ejemplo.

    Use el comando git clone para descargar el paquete del conector de Spark. Asegúrese de que git esté instalado en su entorno; de lo contrario, se producirá un error al ejecutar el 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 la información de acceso de la cuenta de MaxCompute.

    En la carpeta conf de su instalación de Spark, cree un archivo spark-defaults.conf:

    cd $SPARK_HOME/conf
    vim spark-defaults.conf

    Agregue a continuación la información de la cuenta en el archivo 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. Acceda a MaxCompute mediante el conector de Spark.

    1. Ejecute el siguiente comando en la carpeta bin de su instalación de Spark para iniciar el cliente de Spark SQL:

      cd $SPARK_HOME/bin
      spark-sql
    2. Consulte las tablas del proyecto de MaxCompute:

      SHOW tables in odps.doc_test;

      doc_test es un nombre de proyecto de MaxCompute de ejemplo. Sustitúyalo por el nombre de su proyecto de MaxCompute.

    3. Cree una tabla:

      CREATE TABLE odps.doc_test.mc_test_table (name STRING, num BIGINT);
    4. Lea los datos de la tabla:

      SELECT * FROM odps.doc_test.mc_test_table;
    5. Cree una tabla particionada:

       CREATE TABLE odps.doc_test.mc_test_table_pt (name STRING, num BIGINT) PARTITIONED BY (pt1 STRING, pt2 STRING);
    6. Lea los datos de la tabla particionada:

      SELECT * FROM odps.doc_test.mc_test_table_pt;

      Se devuelve el siguiente resultado:

      test1   1       2018    0601
      test2   2       2018    0601
      Time taken: 1.312 seconds, Fetched 2 row(s)
    7. Elimine la tabla:

      DROP TABLE IF EXISTS odps.doc_test.mc_test_table;