O mecanismo Spark do AnalyticDB for MySQL permite acessar dados no Object Storage Service (OSS) pertencentes à mesma conta Alibaba Cloud (acesso na mesma conta) ou a uma conta diferente (acesso entre contas). Este tópico descreve como acessar dados no OSS na mesma conta e entre contas.
Pré-requisitos
Cluster AnalyticDB for MySQL Enterprise Edition, Basic Edition ou Data Lakehouse Edition criado.
Bucket do Object Storage Service (OSS) criado na mesma região do cluster AnalyticDB for MySQL.
Grupo de recursos de job criado para o cluster AnalyticDB for MySQL.
-
Conta de banco de dados criada para o cluster AnalyticDB for MySQL.
Se você utilizar uma conta Alibaba Cloud, basta criar uma conta privilegiada.
Caso utilize um usuário do Resource Access Management (RAM), crie uma conta privilegiada e uma conta padrão e associe a conta padrão ao usuário RAM.
-
Autorização concluída. Para mais informações, consulte Autorização rápida.
ImportanteO acesso na mesma conta requer a permissão AliyunADBSparkProcessingDataRole. Para acesso entre contas, conceda as permissões necessárias à outra conta Alibaba Cloud.
Etapa 1: Prepare os dados
-
Prepare um arquivo de texto e carregue-o em um bucket do OSS. Este tópico utiliza como exemplo um arquivo de texto chamado
readme.txt. Para mais informações, consulte Carregar arquivos.AnalyticDB for MySQL Database product -
Escreva um script Python e carregue-o no bucket do OSS. Este exemplo usa um script Python chamado
example.py, que lê a primeira linha do arquivo readme.txt.import sys from pyspark.sql import SparkSession # Initialize Spark. spark = SparkSession.builder.appName('OSS Example').getOrCreate() # Read the specified file. The file path is passed as an argument from 'args'. textFile = spark.sparkContext.textFile(sys.argv[1]) # Count and print the total number of lines in the file. print("File total lines: " + str(textFile.count())) # Print the first line of the file. print("First line is: " + textFile.first())
Etapa 2: Acesse os dados do OSS
Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo do console, selecione uma região. No painel de navegação à esquerda, clique em Clusters. Localize o cluster desejado e clique no ID do cluster.
No painel de navegação à esquerda, clique em .
Acima do editor, selecione um grupo de recursos de job e um tipo de aplicação Spark. Este tópico usa o tipo Batch como exemplo.
-
No editor, insira o seguinte código Spark para ler o arquivo do OSS e exibir a contagem total de linhas e a primeira linha.
Acesso na mesma conta
{ "args": ["oss://testBucketName/data/readme.txt"], "name": "spark-oss-test", "file": "oss://testBucketName/data/example.py", "conf": { "spark.driver.resourceSpec": "small", "spark.executor.resourceSpec": "small", "spark.executor.instances": 1 } }Parâmetros:
Parâmetro
Descrição
args
Argumentos da aplicação Spark.
Neste exemplo, o caminho do OSS do arquivo de texto é atribuído a
textFile.name
Nome da aplicação Spark.
file
Caminho de armazenamento do arquivo principal da aplicação Spark. O arquivo principal pode ser um pacote JAR com a classe de entrada ou um script Python executável.
ImportanteAtualmente, o arquivo principal de uma aplicação Spark só pode ser armazenado no OSS.
spark.adb.roleArn
Função RAM para acesso entre contas a uma fonte de dados externa. Especifique várias funções separando-as por vírgulas (,). O formato é
acs:ram::<testAccountID>:role/<testUserName>.-
<testAccountID>: ID da conta Alibaba Cloud à qual a fonte de dados externa pertence. -
<testUserName>: Nome da função RAM criada para autorização entre contas. Para mais informações, consulte Autorizar contas.
NotaEste parâmetro não é necessário para acesso ao OSS na mesma conta.
conf
Parâmetros de configuração da aplicação Spark. A maioria é consistente com os parâmetros padrão do Apache Spark. O formato é
key: value. Use vírgulas (,) para separar vários parâmetros. Para parâmetros diferentes do Apache Spark ou específicos do AnalyticDB for MySQL, consulte Parâmetros de configuração de aplicações Spark.Acesso entre contas
{ "args": ["oss://testBucketName/data/readme.txt"], "name": "CrossAccount", "file": "oss://testBucketName/data/example.py", "conf": { "spark.adb.roleArn": "acs:ram::testAccountID:role/<testUserName>", "spark.driver.resourceSpec": "small", "spark.executor.resourceSpec": "small", "spark.executor.instances": 1 } }Parâmetros:
Parâmetro
Descrição
args
Argumentos da aplicação Spark.
Neste exemplo, o caminho do OSS do arquivo de texto é atribuído a
textFile.name
Nome da aplicação Spark.
file
Caminho de armazenamento do arquivo principal da aplicação Spark. O arquivo principal pode ser um pacote JAR com a classe de entrada ou um script Python executável.
ImportanteAtualmente, o arquivo principal de uma aplicação Spark só pode ser armazenado no OSS.
spark.adb.roleArn
Função RAM para acesso entre contas a uma fonte de dados externa. Especifique várias funções separando-as por vírgulas (,). O formato é
acs:ram::<testAccountID>:role/<testUserName>.-
<testAccountID>: ID da conta Alibaba Cloud à qual a fonte de dados externa pertence. -
<testUserName>: Nome da função RAM criada para autorização entre contas. Para mais informações, consulte Autorizar contas.
NotaEste parâmetro não é necessário para acesso ao OSS na mesma conta.
conf
Parâmetros de configuração da aplicação Spark. A maioria é consistente com os parâmetros padrão do Apache Spark. O formato é
key: value. Use vírgulas (,) para separar vários parâmetros. Para parâmetros diferentes do Apache Spark ou específicos do AnalyticDB for MySQL, consulte Parâmetros de configuração de aplicações Spark. -
-
Clique em Run Now.
Após a conclusão do job, visualize a saída no log do job. Para isso, acesse Applications na página Spark JAR Development e clique em Logs referente ao seu job. Para mais informações, consulte Editor de desenvolvimento Spark.
Referências
Para uma visão geral do desenvolvimento de aplicações Spark, consulte Introdução ao desenvolvimento de aplicações Spark.
Para detalhes sobre os parâmetros de configuração de aplicações Spark, consulte Parâmetros de configuração de aplicações Spark.