Usar pacotes externos com o Jupyter Notebooks em clusters do Apache Spark no HDInsight

Saiba como configurar um Jupyter Notebook no cluster Apache Spark no HDInsight para usar pacotes Apache maven externos e contribuídos pela comunidade que não estão incluídos prontos para uso no cluster.

Você pode pesquisar no repositório Maven a lista completa de pacotes disponíveis. Você também pode obter uma lista de pacotes disponíveis de outras fontes. Por exemplo, uma lista completa de pacotes contribuídos pela comunidade está disponível em Pacotes Spark.

Neste artigo, você aprenderá a usar o pacote spark-csv com o Jupyter Notebook.

Pré-requisitos

  • Um cluster do Apache Spark no HDInsight. Para obter instruções, veja Criar clusters do Apache Spark no Azure HDInsight.

  • Familiaridade com a utilização de Jupyter Notebooks com o Spark no HDInsight. Para obter mais informações, consulte Carregar dados e executar consultas com o Apache Spark no HDInsight.

  • O esquema de URI para o armazenamento primário de clusters. Isso seria wasb:// para o Armazenamento do Azure, abfs:// para o Azure Data Lake Storage Gen2 ou adl:// para o Azure Data Lake Storage Gen1. Se a transferência segura estiver habilitada para o Armazenamento do Azure ou o Armazenamento Data Lake Gen2, o URI será wasbs:// ou abfss://, respectivamente, Consulte também, transferência segura.

Use pacotes externos com o Jupyter Notebooks

  1. Navegue até https://CLUSTERNAME.azurehdinsight.net/jupyter onde CLUSTERNAME está o nome do cluster do Spark.

  2. Crie um novo bloco de notas. Selecione Novo e, em seguida, selecione Faísca.

    Create a new Spark Jupyter Notebook.

  3. É criado e aberto um novo bloco de notas com o nome Untitled.pynb. Selecione o nome do bloco de notas na parte superior e introduza um nome amigável.

    Provide a name for the notebook.

  4. Você usará a %%configure mágica para configurar o notebook para usar um pacote externo. Em blocos de anotações que usam pacotes externos, certifique-se de chamar a %%configure mágica na primeira célula de código. Isso garante que o kernel esteja configurado para usar o pacote antes do início da sessão.

    Importante

    Se você esquecer de configurar o kernel na primeira célula, você pode usar o %%configure com o -f parâmetro, mas isso irá reiniciar a sessão e todo o progresso será perdido.

    Versão do HDInsight Comando
    Para HDInsight 3.5 e HDInsight 3.6 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.11:1.5.0" }}
    Para HDInsight 3.3 e HDInsight 3.4 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
  5. O trecho acima espera as coordenadas maven para o pacote externo no Maven Central Repository. Neste trecho, com.databricks:spark-csv_2.11:1.5.0 é a coordenada maven para o pacote spark-csv . Veja como você constrói as coordenadas de um pacote.

    a. Localize o pacote no repositório Maven. Para este artigo, usamos spark-csv.

    b. No repositório, reúna os valores para GroupId, ArtifactId e Version. Certifique-se de que os valores coletados correspondem ao cluster. Nesse caso, estamos usando um pacote Scala 2.11 e Spark 1.5.0, mas talvez seja necessário selecionar versões diferentes para a versão apropriada do Scala ou do Spark em seu cluster. Você pode descobrir a versão do Scala em seu cluster executando scala.util.Properties.versionString no kernel do Spark Jupyter ou no envio do Spark. Você pode descobrir a versão do Spark em seu cluster executando sc.version em Jupyter Notebooks.

    Use external packages with Jupyter Notebook.

    c. Concatene os três valores, separados por dois pontos (:).

    com.databricks:spark-csv_2.11:1.5.0
    
  6. Execute a célula de código com a %%configure magia. Isso configurará a sessão subjacente do Livy para usar o pacote fornecido. Nas células subsequentes do bloco de anotações, agora você pode usar o pacote, como mostrado abaixo.

    val df = spark.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    

    Para o HDInsight 3.4 e inferior, você deve usar o seguinte trecho.

    val df = sqlContext.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  7. Em seguida, você pode executar os trechos, como mostrado abaixo, para exibir os dados do quadro de dados criado na etapa anterior.

    df.show()
    
    df.select("Time").count()
    

Consulte também

Cenários

Criar e executar aplicações

Ferramentas e extensões

Gerir recursos