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
Purchase an exclusive resource group for Data Transmission Service (subscription) .
-
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.xy, a continuación, descomprima el paquete en una carpeta local.Para construir el entorno de desarrollo de Spark en un sistema operativo Linux, consulte Build a Linux development environment.
Para construir el entorno de desarrollo de Spark en un sistema operativo Windows, consulte Build a Windows development environment.
-
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 clonepara 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/ -
Configure la información de acceso de la cuenta de MaxCompute.
En la carpeta
confde su instalación de Spark, cree un archivospark-defaults.conf:cd $SPARK_HOME/conf vim spark-defaults.confAgregue 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 -
Acceda a MaxCompute mediante el conector de Spark.
-
Ejecute el siguiente comando en la carpeta
binde su instalación de Spark para iniciar el cliente de Spark SQL:cd $SPARK_HOME/bin spark-sql -
Consulte las tablas del proyecto de MaxCompute:
SHOW tables in odps.doc_test;doc_testes un nombre de proyecto de MaxCompute de ejemplo. Sustitúyalo por el nombre de su proyecto de MaxCompute. -
Cree una tabla:
CREATE TABLE odps.doc_test.mc_test_table (name STRING, num BIGINT); -
Lea los datos de la tabla:
SELECT * FROM odps.doc_test.mc_test_table; -
Cree una tabla particionada:
CREATE TABLE odps.doc_test.mc_test_table_pt (name STRING, num BIGINT) PARTITIONED BY (pt1 STRING, pt2 STRING); -
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) -
Elimine la tabla:
DROP TABLE IF EXISTS odps.doc_test.mc_test_table;
-