Executar o Apache Spark a partir do Spark Shell
Um Apache Spark Shell interativo fornece um ambiente REPL (ciclo de impressão-execução de leitura) para executar comandos do Spark um de cada vez e ver os resultados. Este processo é útil para desenvolvimento e depuração. O Spark fornece uma shell para cada um dos idiomas suportados: Scala, Python e R.
Executar um Apache Spark Shell
Utilize o comando ssh para ligar ao cluster. Edite o comando abaixo ao substituir CLUSTERNAME pelo nome do cluster e, em seguida, introduza o comando:
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
O Spark fornece shells para Scala (spark-shell) e Python (pyspark). Na sessão SSH, introduza um dos seguintes comandos:
spark-shell # Optional configurations # spark-shell --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
pyspark # Optional configurations # pyspark --num-executors 4 --executor-memory 4g --executor-cores 2 --driver-memory 8g --driver-cores 4
Se pretender utilizar qualquer configuração opcional, verifique primeiro a exceção OutOfMemoryError para o Apache Spark.
Alguns comandos de exemplo básicos. Escolha o idioma relevante:
val textFile = spark.read.textFile("/example/data/fruits.txt") textFile.first() textFile.filter(line => line.contains("apple")).show()
textFile = spark.read.text("/example/data/fruits.txt") textFile.first() textFile.filter(textFile.value.contains("apple")).show()
Consultar um ficheiro CSV. Tenha em atenção que o idioma abaixo funciona para
spark-shell
epyspark
.spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
Consultar um ficheiro CSV e armazenar resultados na variável:
var data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
data = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv")
Apresentar resultados:
data.show() data.select($"BuildingID", $"Country").show(10)
data.show() data.select("BuildingID", "Country").show(10)
Sair
:q
exit()
Instâncias sparkSession e SparkContext
Por predefinição, quando executa o Spark Shell, as instâncias do SparkSession e do SparkContext são automaticamente instanciadas automaticamente.
Para aceder à instância sparkSession, introduza spark
. Para aceder à instância sparkContext, introduza sc
.
Parâmetros importantes da shell
O comando do Spark Shell (spark-shell
ou pyspark
) suporta muitos parâmetros da linha de comandos. Para ver uma lista completa de parâmetros, inicie o Spark Shell com o comutador --help
. Alguns destes parâmetros só podem ser aplicados ao spark-submit
, que o Spark Shell molda.
trocar | descrição | exemplo |
---|---|---|
--master MASTER_URL |
Especifica o URL principal. No HDInsight, este valor é sempre yarn . |
--master yarn |
--jars JAR_LIST |
Lista separada por vírgulas de jars locais a incluir nos caminhos de classe do controlador e do executor. No HDInsight, esta lista é composta por caminhos para o sistema de ficheiros predefinido no Armazenamento do Azure ou Data Lake Storage. | --jars /path/to/examples.jar |
--packages MAVEN_COORDS |
Lista separada por vírgulas de coordenadas maven de jars a incluir nos caminhos de classe do controlador e do executor. Procura no repositório maven local e, em seguida, no maven central e, em seguida, em quaisquer repositórios remotos adicionais especificados com --repositories . O formato das coordenadas é groupId:artifactId:version. |
--packages "com.microsoft.azure:azure-eventhubs:0.14.0" |
--py-files LIST |
Apenas para Python, uma lista separada por vírgulas de .zip , .egg ou .py ficheiros a colocar no PYTHONPATH. |
--pyfiles "samples.py" |
Passos seguintes
- Veja Introdução ao Apache Spark no Azure HDInsight para obter uma descrição geral.
- Veja Criar um cluster do Apache Spark no Azure HDInsight para trabalhar com clusters do Spark e SparkSQL.
- Consulte O que é a Transmissão em Fluxo Estruturada do Apache Spark? para escrever aplicações que processam dados de transmissão em fluxo com o Spark.