Execute o Apache Spark no Shell Spark

Interativo Apache Spark Shell fornece um ambiente de REPL (read-executar-print loop) para executar um comando Spark por vez e ver os resultados. Esse processo é útil para desenvolvimento e depuração. O Spark fornece um shell para cada um dos idiomas com suporte: Scala, Python e R.

Executar um Shell do Apache Spark

  1. Use o comando ssh para se conectar ao cluster. Edite o comando abaixo substituindo CLUSTERNAME pelo nome do cluster e, em seguida, insira o comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. O Spark fornece shells para as linguagens Scala (spark-shell) e Python (pyspark). Na sessão do SSH, insira 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 você pretende usar alguma configuração opcional, verifique primeiro a Exceção OutOfMemoryError para o Apache Spark.

  3. Alguns comandos de exemplo básicos. Escolha a linguagem 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. Consulte um arquivo CSV. Observe que a linguagem abaixo funciona para spark-shell e pyspark.

    spark.read.csv("/HdiSamples/HdiSamples/SensorSampleData/building/building.csv").show()
    
  5. Consulte um arquivo CSV e armazene os 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. Exiba os resultados:

    data.show()
    data.select($"BuildingID", $"Country").show(10)
    
    data.show()
    data.select("BuildingID", "Country").show(10)
    
  7. Fechar

    :q
    
    exit()
    

Instâncias SparkSession e SparkContext

Por padrão, ao executar o shell do Spark, as instâncias SparkSession e SparkContext são automaticamente instanciadas.

Para acessar a instância de SparkSession, digite spark. Para acessar a instância de SparkContext, digite sc.

Parâmetros de shell importantes

O comando Shell do Spark (spark-shell ou pyspark) dá suporte a vários parâmetros de linha de comando. Para ver uma lista completa de parâmetros, inicie o shell do Spark com a opção --help. Alguns desses parâmetros podem se aplicar somente a spark-submit, que o shell do Spark encapsula.

switch descrição exemplo
--master MASTER_URL Especifica a URL mestre. No HDInsight, esse valor é sempre yarn. --master yarn
--jars JAR_LIST Lista separada por vírgulas de jars locais a ser incluída em classpaths de driver e executor. No HDInsight, essa lista é composta de caminhos para o sistema de arquivos padrão no Armazenamento do Microsoft Azure ou no Data Lake Storage. --jars /path/to/examples.jar
--packages MAVEN_COORDS Lista separada por vírgulas de coordenadas maven de jars para incluir nos classpaths de driver e executor. Pesquisa o repositório local maven e, em seguida, o maven central e todos os 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 o Python, uma lista separada por vírgula de arquivos .zip, .egg ou .py a ser colocada no PYTHONPATH. --pyfiles "samples.py"

Próximas etapas