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
Purchase an exclusive resource group for Data Transmission Service (subscription) .
-
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.xe descompacte-o em uma pasta local.Para configure o ambiente de desenvolvimento Spark no sistema operacional Linux, consulte Build a Linux development environment.
Para configure o ambiente de desenvolvimento Spark no sistema operacional Windows, consulte Build a Windows development environment.
-
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 clonepara 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/ -
Configure as informações de acesso da conta do MaxCompute.
Na pasta
confda instalação do Spark, crie um arquivospark-defaults.conf:cd $SPARK_HOME/conf vim spark-defaults.confAdicione 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 -
Acesse o MaxCompute pelo conector do Spark.
-
Execute o seguinte comando na pasta
binda instalação do Spark para iniciar o cliente Spark SQL:cd $SPARK_HOME/bin spark-sql -
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. -
Crie uma tabela:
CREATE TABLE odps.doc_test.mc_test_table (name STRING, num BIGINT); -
Leia os dados da tabela:
SELECT * FROM odps.doc_test.mc_test_table; -
Crie uma tabela particionada:
CREATE TABLE odps.doc_test.mc_test_table_pt (name STRING, num BIGINT) PARTITIONED BY (pt1 STRING, pt2 STRING); -
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) -
Exclua a tabela:
DROP TABLE IF EXISTS odps.doc_test.mc_test_table;
-