Este tópico descreve como configurar um ambiente de desenvolvimento Spark on MaxCompute.
Se você utiliza o sistema operacional Windows, acesse Configurar um ambiente de desenvolvimento Windows.
Pré-requisitos
Antes de configurar o ambiente de desenvolvimento Spark on MaxCompute, certifique-se de que os seguintes softwares estejam instalados no seu sistema operacional Linux:
Os números de versão e os caminhos de instalação dos softwares mencionados neste tópico servem apenas como referência. A versão real do software que você deve baixar e instalar varia conforme o seu sistema operacional.
-
JDK
Os comandos de exemplo a seguir mostram como instalar o JDK em um sistema operacional Linux. O nome do pacote JDK varia conforme a situação real. Obtenha o nome do pacote JDK executando o comando
sudo yum -y list java*.sudo yum install -y java-1.8.0-openjdk-devel.x86_64 -
Python
Os comandos de exemplo a seguir mostram como instalar o Python em um sistema operacional Linux. O nome do pacote Python varia conforme a situação real.
# Obtain the Python package. sudo wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz # Decompress the Python package. sudo tar -zxvf Python-2.7.10.tgz # Switch to the path to which the Python package is decompressed and specify the installation path. cd Python-2.7.10 sudo ./configure --prefix=/usr/local/python2 # Compile and install the Python package. sudo make sudo make install -
Maven
Os comandos de exemplo a seguir mostram como instalar o Maven em um sistema operacional Linux. O caminho do pacote Maven varia conforme a situação real.
# Obtain the Maven package. sudo wget https://dlcdn.apache.org/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz # Decompress the Maven package. sudo tar -zxvf apache-maven-3.8.7-bin.tar.gz -
Git
Os comandos de exemplo a seguir mostram como instalar o Git em um sistema operacional Linux.
# Obtain the Git package. sudo wget https://github.com/git/git/archive/v2.17.0.tar.gz # Decompress the Git package. sudo tar -zxvf v2.17.0.tar.gz # Install the dependencies that are required for compiling the source code of Git. sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker # Switch to the path to which the Git package is decompressed. cd git-2.17.0 # Compile the source code of Git. sudo make prefix=/usr/local/git all # Install Git in the /usr/local/git path. sudo make prefix=/usr/local/git install
Baixar o pacote do cliente Spark on MaxCompute e enviá-lo ao seu sistema operacional
O pacote do cliente Spark on MaxCompute inclui o recurso de autenticação do MaxCompute. Isso permite que o Spark on MaxCompute atue como um cliente para enviar jobs ao seu projeto MaxCompute usando o script spark-submit. O MaxCompute fornece pacotes de lançamento para Spark 1.x, Spark 2.x e Spark 3.x. Baixe esses pacotes nos links a seguir:
Spark-1.6.3: usado para desenvolver aplicações Spark 1.x.
Spark-2.3.0: usado para desenvolver aplicações Spark 2.x.
Spark-2.4.5: usado para desenvolver aplicações Spark 2.x. Para mais informações sobre as precauções ao usar o Spark 2.4.5, consulte Precauções ao usar o Spark 2.4.5.
Spark-3.1.1: usado para desenvolver aplicações Spark 3.x. Para mais informações sobre as precauções ao usar o Spark 3.1.1, consulte Precauções ao usar o Spark 3.1.1.
Envie o pacote do cliente Spark on MaxCompute para o seu sistema operacional Linux e descompacte-o. Acesse o diretório onde o pacote do cliente Spark on MaxCompute está localizado e execute o seguinte comando para descompactá-lo:
sudo tar -xzvf spark-2.3.0-odps0.33.0.tar.gz
Configurar variáveis de ambiente
Apenas usuários com permissões de administrador podem executar os comandos usados para configurar variáveis de ambiente nesta seção.
Configure as variáveis de ambiente na CLI do seu sistema operacional Linux. O conteúdo a seguir descreve como configurar essas variáveis e fornece informações relacionadas.
-
Configure as variáveis de ambiente do Java.
-
Obtenha o caminho de instalação do Java. Comandos de exemplo:
# If you use yum to install Java, Java is installed in the /usr path by default. You can run the following command to query the Java installation path. If you use a custom installation path, the actual path prevails. whereis java ls -lrt /usr/bin/java ls -lrt /etc/alternatives/java # The following result is returned. In the result, /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64 is the Java installation path. /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre/bin/java
-
Edite as variáveis de ambiente do Java. Comandos de exemplo:
# Edit the configuration file for environment variables. vim /etc/profile # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set JAVA_HOME to the actual Java installation path. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. # Run the following command to make the modification take effect: source /etc/profile # Check whether the Java environment variables are successfully configured. java -version # The following result is returned: openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
-
-
Configure as variáveis de ambiente do Spark.
Obtenha o caminho onde o pacote do cliente Spark on MaxCompute foi descompactado. A figura a seguir mostra que o caminho é
/home/spark-2.3.0-odps0.33.0. O caminho de descompactação e o nome do pacote variam conforme a situação real.
-
Edite as variáveis de ambiente do Spark. Comandos de exemplo:
# Edit the configuration file for environment variables. vim /etc/profile # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set SPARK_HOME to the actual path to which the Spark on MaxCompute client package is decompressed. export SPARK_HOME=/home/spark-2.3.0-odps0.33.0 export PATH=$SPARK_HOME/bin:$PATH # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. # Run the following command to make the modification take effect: source /etc/profile
-
Configure as variáveis de ambiente do Python.
Caso utilize PySpark, configure as variáveis de ambiente do Python.
Obtenha o caminho de instalação do Python. Comando de exemplo:

-
Edite as variáveis de ambiente do Python. Comandos de exemplo:
# Edit the configuration file for environment variables. vim /etc/profile # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set PATH to the actual Python installation path. export PATH=/usr/bin/python/bin/:$PATH # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. # Run the following command to make the modification take effect: source /etc/profile # Check whether the Python environment variables are successfully configured. python --version # The following result is returned: Python 2.7.5
-
Configure as variáveis de ambiente do Maven.
Obtenha o caminho onde o pacote Maven foi descompactado. A figura a seguir mostra que o caminho é
/home/apache-maven-3.8.7. O caminho de descompactação e o nome do pacote variam conforme a situação real.
-
Edite as variáveis de ambiente do Maven. Comandos de exemplo:
# Edit the configuration file for environment variables. vim /etc/profile # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set MAVEN_HOME to the actual path to which the Maven package is decompressed. export MAVEN_HOME=/home/apache-maven-3.8.7 export PATH=$MAVEN_HOME/bin:$PATH # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. # Run the following command to make the modification take effect: source /etc/profile # Check whether the Maven environment variables are successfully configured. mvn -version # The following result is returned: Apache Maven 3.8.7 (9b656c72d54e5bacbed989b64718c159fe39b537) Maven home: /home/apache-maven-3.8.7 Java version: 1.8.0_322, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.19.91-25.1.al7.x86_64", arch: "amd64", family: "unix"
-
Configure as variáveis de ambiente do Git.
-
Obtenha o caminho de instalação do Git. Comandos de exemplo:
whereis git
-
Edite as variáveis de ambiente do Git. Comandos de exemplo:
# Edit the configuration file for environment variables. vim /etc/profile # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set PATH to the actual Git installation path. export PATH=/usr/local/git/bin/:$PATH # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. # Run the following command to make the modification take effect: source /etc/profile # Check whether the Git environment variables are successfully configured. git --version # The following result is returned: git version 2.24.4
-
Configurar o arquivo spark-defaults.conf
Ao utilizar o cliente Spark on MaxCompute pela primeira vez, renomeie o arquivo spark-defaults.conf.template na pasta conf do caminho de descompactação do pacote do cliente Spark on MaxCompute para spark-defaults.conf. Em seguida, configure as informações no arquivo. Caso não renomeie o arquivo, a configuração não terá efeito. Comandos de exemplo:
# Switch to the path to which the Spark on MaxCompute client package is decompressed and go to the conf folder. The actual path prevails.
cd /home/spark-2.3.0-odps0.33.0/conf
# Rename the spark-defaults.conf.template file.
mv spark-defaults.conf.template spark-defaults.conf
# Edit the spark-defaults.conf file.
vim spark-defaults.conf
# Press i to enter the edit mode and add the following configuration to the end of the configuration file.
spark.hadoop.odps.project.name = <MaxCompute_project_name>
spark.hadoop.odps.access.id = <AccessKey_id>
spark.hadoop.odps.access.key = <AccessKey_secret>
spark.hadoop.odps.end.point = <Endpoint> # The endpoint that is used to connect the Spark on MaxCompute client to your MaxCompute project. You can modify the endpoint based on your business requirements. For more information, see Endpoint.
# For Spark 2.3.0, set spark.sql.catalogImplementation to odps. For Spark 2.4.5, set spark.sql.catalogImplementation to hive.
spark.sql.catalogImplementation={odps|hive}
# Retain the following configurations:
spark.hadoop.odps.task.major.version = cupid_v2
spark.hadoop.odps.cupid.container.image.enable = true
spark.hadoop.odps.cupid.container.vm.engine.type = hyper
spark.hadoop.odps.moye.trackurl.host = http://jobview.odps.aliyun.com
-
MaxCompute_project_name: o nome do projeto MaxCompute que você deseja acessar.
Este parâmetro especifica o nome do seu projeto MaxCompute, e não o workspace do DataWorks ao qual o projeto corresponde. Faça login no console do MaxCompute. Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, escolha Workspace > Projects para visualizar o nome do projeto MaxCompute.
-
AccessKey_id: o AccessKey ID usado para acessar o projeto MaxCompute.
Obtenha o AccessKey ID na página AccessKey Pair.
-
AccessKey_secret: o AccessKey secret correspondente ao AccessKey ID.
Obtenha o AccessKey secret na página AccessKey Pair.
-
Endpoint: o endpoint público da região onde reside o seu projeto MaxCompute.
Para mais informações sobre o endpoint público de cada região, consulte Endpoints em diferentes regiões (Internet).
-
VPC_endpoint: o endpoint VPC da região onde reside o seu projeto MaxCompute.
Para mais informações sobre o endpoint VPC de cada região, consulte Endpoints em diferentes regiões (VPC).
Outros parâmetros de configuração são necessários para cenários e recursos especiais. Para mais informações, consulte Detalhes da configuração do Spark on MaxCompute.
Preparar um projeto
O Spark on MaxCompute fornece um modelo de projeto de demonstração. Recomendamos baixar e copiar esse modelo para desenvolver sua aplicação.
No projeto de demonstração, o escopo de dependência para o Spark on MaxCompute já está definido. Não altere esse escopo, caso contrário, o job enviado pode não ser executado conforme o esperado.
Prepare um projeto em um sistema operacional Linux.
-
Baixe o modelo Spark 1.x e compile-o.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-1.x mvn clean package -
Baixe o modelo Spark 2.x e compile-o.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-2.x mvn clean package -
Baixe o modelo Spark 3.x e compile-o.
git clone https://github.com/aliyun/MaxCompute-Spark.git cd MaxCompute-Spark/spark-3.x mvn clean package
Se uma mensagem de erro aparecer após a execução dos comandos acima indicando que as configurações de ambiente são inválidas, siga as instruções anteriores para verificar as configurações. Caso encontre configurações inválidas, modifique-as.
Configurar dependências
No projeto Spark on MaxCompute preparado, configure as dependências. Comandos de exemplo:
-
Configure as dependências necessárias para acessar tabelas no seu projeto MaxCompute.
-
Uso do modelo Spark-1.x.
# Go to the spark-1.x folder. cd MaxCompute-Spark/spark-1.x # Edit the POM file to add the odps-spark-datasource dependency. <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-spark-datasource_2.10</artifactId> <version>3.3.8-public</version> </dependency> -
Uso do modelo Spark-2.x.
# Go to the spark-2.x folder. cd MaxCompute-Spark/spark-2.x # Edit the POM file to add the odps-spark-datasource dependency. <dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-spark-datasource_2.11</artifactId> <version>3.3.8-public</version> </dependency>
-
-
Configure a dependência necessária para acessar o Object Storage Service (OSS).
Se o seu job precisar acessar o OSS, adicione a seguinte dependência:
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>hadoop-fs-oss</artifactId> <version>3.3.8-public</version> </dependency>
Para mais informações sobre as dependências necessárias ao usar os modelos Spark-1.x, Spark-2.x ou Spark-3.x, consulte pom do Spark-1.x, pom do Spark-2.x ou pom do Spark-3.x.
Referenciar arquivos externos
Ao desenvolver os seguintes tipos de jobs Spark, é necessário referenciar arquivos externos:
Jobs Spark que precisam ler dados de arquivos de configuração específicos.
Jobs Spark que exigem pacotes de recursos adicionais ou bibliotecas de terceiros, como arquivos JAR ou bibliotecas Python.
Na prática, envie os arquivos externos antes de referenciá-los. Utilize um dos métodos a seguir para enviar arquivos externos:
-
Método 1: Enviar arquivos externos usando parâmetros do Spark.
O Spark on MaxCompute suporta os seguintes parâmetros definidos pelo Apache Spark:
--jars,--py-files,--filese--archives. Configure esses parâmetros para enviar arquivos externos ao submeter jobs. Durante a execução dos jobs, esses arquivos externos são carregados nos seus diretórios de trabalho.-
Use o script spark-submit para enviar arquivos no cliente Spark on MaxCompute.
Nota--jars: Este parâmetro especifica os pacotes JAR que você deseja enviar para os diretórios de trabalho atuais do driver e de cada executor. Os nomes dos pacotes são separados por vírgulas (,). Esses pacotes JAR são adicionados aos classpaths do driver e de cada executor. Use"./your_jar_name"nas configurações dos jobs Spark para especificar esses pacotes, seguindo o padrão do Apache Spark.--filese--py-files: Estes dois parâmetros especificam os arquivos comuns ou arquivos Python que você deseja enviar para os diretórios de trabalho atuais do driver e de cada executor. Os nomes dos arquivos são separados por vírgulas (,). Use"./your_file_name"nas configurações dos jobs Spark para especificar esses arquivos, seguindo o padrão do Apache Spark.--archives: Este parâmetro difere ligeiramente daquele definido pelo Apache Spark. Configure-o no formatoxxx#yyye separe os nomes dos arquivos com vírgulas (,). Após configurar o parâmetro --archives, os arquivos compactados especificados, como arquivos ZIP, são descompactados nos subdiretórios dos diretórios de trabalho atuais do driver e de cada executor. Por exemplo, se este parâmetro for definido comoxx.zip#yy, use"./yy/xx/"para referenciar o conteúdo do arquivo compactado. Se o parâmetro for definido comoxx.zip, use"./xx.zip/xx/"para referenciar o conteúdo. Caso precise usar"./xxx/"para descompactar o arquivo diretamente no diretório de trabalho atual, utilize o parâmetrospark.hadoop.odps.cupid.resources.
-
Use o DataWorks para adicionar os recursos necessários a um job. Para mais informações, consulte Criar e usar recursos do MaxCompute.
NotaNo console do DataWorks, é possível enviar arquivos de até 200 MB. Se o tamanho dos arquivos exceder 200 MB, use o cliente do MaxCompute para enviá-los como recursos do MaxCompute e adicione-os à página DataStudio no console do DataWorks. Para mais informações sobre recursos do MaxCompute, consulte Gerenciar recursos do MaxCompute.
-
-
Método 2: Enviar arquivos como recursos do MaxCompute.
O Spark on MaxCompute fornece o parâmetro
spark.hadoop.odps.cupid.resources. Ele permite referenciar diretamente recursos no MaxCompute. Ao executar um job, os recursos referenciados são carregados nos seus diretórios de trabalho. Para enviar arquivos como recursos do MaxCompute, execute as etapas a seguir:Faça login no cliente do MaxCompute e envie arquivos como recursos para o seu projeto MaxCompute. O tamanho máximo de arquivo permitido para envio é de 500 MB.
-
Adicione o parâmetro
spark.hadoop.odps.cupid.resourcesàs configurações do seu job Spark. Esse parâmetro especifica os recursos do MaxCompute necessários para executar o job. Configure-o no formato<projectname>.<resourcename>. Para referenciar vários arquivos, separe os nomes com vírgulas (,). O exemplo a seguir ilustra essa configuração.spark.hadoop.odps.cupid.resources=public.python-python-2.7-ucs4.zip,public.myjar.jarO arquivo de recurso especificado é baixado para os diretórios de trabalho atuais do driver e de cada executor. Por padrão, o arquivo baixado recebe o nome no formato
<projectname>.<resourcename>.Também é possível renomear o arquivo usando o formato
<projectname>.<resourcename>:<newresourcename>. O exemplo a seguir demonstra essa configuração.spark.hadoop.odps.cupid.resources=public.myjar.jar:myjar.jarImportanteO parâmetro spark.hadoop.odps.cupid.resources só entra em vigor após ser configurado no arquivo spark-defaults.conf ou no console do DataWorks. Esse parâmetro não terá efeito se for escrito diretamente no código.
Após enviar os arquivos usando um dos métodos anteriores, referencie os arquivos externos no código. O exemplo a seguir demonstra como fazer isso:
val targetFile = "File name"
val file = Source.fromFile(targetFile)
for (line <- file.getLines)
println(line)
file.close
Realizar teste de fumaça SparkPi
Após concluir as operações anteriores, realize um teste de fumaça para verificar a conectividade ponta a ponta do Spark on MaxCompute. Por exemplo, execute os comandos a seguir para realizar um teste de fumaça SparkPi para uma aplicação Spark 2.x:
# /path/to/MaxCompute-Spark Configure a valid path for the compiled JAR package of the application.
cd $SPARK_HOME
bin/spark-submit \
--class com.aliyun.odps.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
/path/to/your/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar
# If the following log information is displayed, smoke testing is successful.
19/06/11 11:57:30 INFO Client:
client token: N/A
diagnostics: N/A
ApplicationMaster host: 11.222.166.90
ApplicationMaster RPC port: 38965
queue: queue
start time: 1560225401092
final status: SUCCEEDED
Observações sobre a execução do Spark on MaxCompute em modo local usando IntelliJ IDEA
Geralmente, o código é executado em modo cluster após a depuração local ser bem-sucedida. No entanto, o Spark on MaxCompute permite executar código em modo local usando o IntelliJ IDEA. Ao executar código em modo local com o IntelliJ IDEA, observe os pontos a seguir:
-
Especifique o parâmetro spark.master no código.
val spark = SparkSession .builder() .appName("SparkPi") .config("spark.master", "local[4]") // The code can run after you set spark.master to local[N]. N indicates the number of concurrent Spark jobs. .getOrCreate() -
Adicione a seguinte dependência do cliente Spark on MaxCompute no IntelliJ IDEA.
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.binary.version}</artifactId> <version>${spark.version}</version> <scope>provided</scope> </dependency>No arquivo pom.xml, o parâmetro scope está definido como provided. Essa configuração pode causar o erro "NoClassDefFoundError" durante a execução do código.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$ at com.aliyun.odps.spark.examples.SparkPi$.main(SparkPi.scala:27) at com.aliyun.odps.spark.examples.Spa. r. kPi.main(SparkPi.scala) Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$ at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 2 moreSiga as etapas abaixo para adicionar manualmente o diretório especificado pelo parâmetro --jars do Spark on MaxCompute ao modelo de projeto do IntelliJ IDEA. Dessa forma, mantém-se a configuração
scope=providede evita-se o erro "NoClassDefFoundError" ao executar o código em modo local no IntelliJ IDEA.Na barra de menu principal do IntelliJ IDEA, escolha File > Project Structure….

Na página Project Structure, clique em Modules no painel de navegação à esquerda. Selecione o pacote de recursos e clique na aba Dependencies referente a ele.
Na aba Dependencies, clique no sinal de mais (+) no canto inferior esquerdo e selecione JARs or directories… para adicionar o diretório especificado pelo parâmetro --jars do Spark on MaxCompute.
-
O arquivo spark-defaults.conf não pode ser referenciado diretamente ao executar o código em modo local. Configure manualmente os parâmetros relacionados no código.
Ao enviar jobs usando o script spark-submit, o sistema lê as configurações do arquivo spark-defaults.conf. Para enviar jobs em modo local, configure manualmente os parâmetros relacionados no código. O código a seguir mostra como usar o Spark SQL para ler dados de tabelas do MaxCompute em modo local.
val spark = SparkSession .builder() .appName("SparkPi") .config("spark.master", "local[4]") // The code can run after you set spark.master to local[N]. N indicates the number of concurrent Spark jobs. .config("spark.hadoop.odps.project.name", "****") .config("spark.hadoop.odps.access.id", "****") .config("spark.hadoop.odps.access.key", "****") .config("spark.hadoop.odps.end.point", "http://service.cn.maxcompute.aliyun.com/api") .config("spark.sql.catalogImplementation", "odps") .getOrCreate()
Precauções ao usar o Spark 2.4.5
-
Uso do Spark 2.4.5 para enviar jobs
Envie o job em um cluster Yarn. Para mais informações, consulte Modo Cluster.
Defina o parâmetro
spark.hadoop.odps.spark.versioncomo spark-2.4.5-odps0.33.0 no console do DataWorks. Se a versão do Spark dos grupos de recursos exclusivos no DataWorks não estiver atualizada para o Spark 2.4.5, utilize grupos de recursos compartilhados para agendar jobs ou entre em contato com a equipe de suporte técnico do MaxCompute para atualizar a versão.
-
Alterações no uso do Spark 2.4.5
Ao enviar jobs em um cluster Yarn, execute o comando
export HADOOP_CONF_DIR=$SPARK_HOME/confpara adicionar a variável de ambiente SPARK_HOME.-
Para depuração em modo local, crie um arquivo chamado odps.conf no caminho
$SPARK_HOME/confe adicione as seguintes configurações ao arquivo:odps.project.name = odps.access.id = odps.access.key = odps.end.point =
-
Alterações nas definições de parâmetros do Spark 2.4.5
spark.sql.catalogImplementation: defina este parâmetro comohive.spark.sql.sources.default: defina este parâmetro comohive.spark.sql.odps.columnarReaderBatchSize: especifica o número de linhas das quais o leitor vetorizado lê dados por vez. Valor padrão: 4096.spark.sql.odps.enableVectorizedReader: especifica se o leitor vetorizado deve ser ativado. Valor padrão: True.spark.sql.odps.enableVectorizedWriter: especifica se o gravador vetorizado deve ser ativado. Valor padrão: True.spark.sql.odps.split.size: ajusta a concorrência das operações de leitura de dados em tabelas do MaxCompute. Por padrão, é definido como 256 para cada partição. Unidade: MB.
Precauções ao usar o Spark 3.1.1
-
Uso do Spark 3.1.1 para enviar jobs
Envie o job em um cluster Yarn. Para mais informações, consulte Modo Cluster.
-
Para enviar jobs Spark versão 3.1.1 escritos em Scala ou Java, adicione as seguintes configurações ao arquivo spark-defaults.conf:
spark.hadoop.odps.cupid.resources = public.__spark_libs__3.1.1-odps0.33.0.zip,[projectname].[Main JAR Package],[projectname].[Other JAR Package] spark.driver.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/* spark.executor.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/*NotaAo enviar jobs Spark versão 3.1.1, especifique todos os recursos necessários no parâmetro spark.hadoop.odps.cupid.resources. Os recursos necessários incluem o pacote JAR principal. Caso contrário, a classe Java relacionada pode não ser encontrada.
Não é possível enviar jobs PySpark usando os métodos acima.
-
Alterações no uso do Spark 3.1.1
Ao enviar jobs em um cluster Yarn, execute o comando
export HADOOP_CONF_DIR=$SPARK_HOME/confpara adicionar a variável de ambiente SPARK_HOME.-
Para enviar jobs PySpark em um cluster Yarn, adicione as seguintes configurações ao arquivo spark-defaults.conf para usar o Spark com Python 3:
spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3 -
Para realizar depuração em modo local, execute as seguintes operações:
-
Crie um arquivo odps.conf no diretório
$SPARK_HOME/confe adicione as seguintes configurações ao arquivo:odps.project.name = odps.access.id = odps.access.key = odps.end.point = -
Adicione
spark.hadoop.fs.defaultFS = file:///ao código. Código de exemplo:val spark = SparkSession .builder() .config("spark.hadoop.fs.defaultFS", "file:///") .enableHiveSupport() .getOrCreate()
-
-
Alterações nas definições de parâmetros do Spark 3.1.1
spark.sql.defaultCatalog: defina este parâmetro comoodps.spark.sql.catalog.odps: defina este parâmetro comoorg.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog.spark.sql.sources.partitionOverwriteMode: defina este parâmetro comodynamic.spark.sql.extensions: defina este parâmetro comoorg.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions.spark.sql.odps.enableVectorizedReader: especifica se o leitor vetorizado deve ser ativado. Valor padrão: True.spark.sql.odps.enableVectorizedWriter: especifica se o gravador vetorizado deve ser ativado. Valor padrão: True.spark.sql.catalog.odps.splitSizeInMB: ajusta a concorrência das operações de leitura de dados em tabelas do MaxCompute. Por padrão, é definido como 256 para cada partição. Unidade: MB.