Partilhar via


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

  1. 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
    
  2. 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.

  3. 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()
    
  4. Consultar um ficheiro CSV. Tenha em atenção que o idioma abaixo funciona para spark-shell e pyspark.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. 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")
    
  6. Apresentar resultados:

    data.show()
    data.select($"BuildingID", $"Country").show(10)
    
    data.show()
    data.select("BuildingID", "Country").show(10)
    
  7. 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-shellou 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, .eggou .py ficheiros a colocar no PYTHONPATH. --pyfiles "samples.py"

Passos seguintes