HDInsight의 Apache Spark 클러스터에서 Jupyter Notebook과 함께 외부 패키지 사용

클러스터에 기본적으로 포함되지 않는 외부의 커뮤니티에서 제공하는 Apache maven 패키지를 사용하도록 HDInsight의 Apache Spark 클러스터에서 Jupyter Notebook을 구성하는 방법을 알아봅니다.

사용할 수 있는 패키지의 전체 목록은 Maven 리포지토리 를 검색할 수 있습니다. 다른 소스에서 사용 가능한 패키지 목록을 가져올 수도 있습니다. 예를 들어 커뮤니티 제공 패키지의 전체 목록은 Spark 패키지에서 사용할 수 있습니다.

이 문서에서는 Jupyter Notebook에서 spark-csv 패키지를 사용하는 방법을 알아봅니다.

필수 조건

Jupyter Notebook에서 외부 패키지 사용

  1. Apache Spark 클러스터의 이름인 https://CLUSTERNAME.azurehdinsight.net/jupyterCLUSTERNAME으로 이동합니다.

  2. 새 Notebook을 만듭니다. 새로 만들기를 선택한 다음, Spark를 선택합니다.

    Create a new Spark Jupyter Notebook.

  3. 새 노트북이 만들어지고 Untitled.pynb 이름으로 열립니다. 맨 위에서 Notebook 이름을 선택하고 식별 이름을 입력합니다.

    Provide a name for the notebook.

  4. %%configure Magic을 사용하여 외부 패키지를 사용하도록 노트북을 구성합니다. 외부 패키지를 사용하는 Notebook에서 %%configure Magic을 호출해야 합니다. 이렇게 하면 커널은 세션이 시작되기 전에 패키지를 사용하도록 구성됩니다.

    Important

    첫 번째 셀에서 커널을 구성하는 것을 잊은 경우 %%configure-f 매개 변수를 사용할 수 있지만 세션이 다시 시작되고 모든 진행률이 손실됩니다.

    HDInsight 버전 명령
    HDInsight 3.5 및 HDInsight 3.6용 %%configure
    { "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.11:1.5.0" }}
    HDInsight 3.3 및 HDInsight 3.4용 %%configure
    { "packages":["com.databricks:spark-csv_2.10:1.4.0"] }
  5. 위의 코드 조각에는 Maven Center Repository의 외부 패키지에 대한 Maven 좌표가 필요합니다. 이 코드 조각에서 com.databricks:spark-csv_2.11:1.5.0spark-csv 패키지에 대한 Maven 좌표입니다. 패키지의 좌표를 생성하는 방법은 다음과 같습니다.

    a. Maven Repository에서 패키지를 찾습니다. 이 문서에서는 spark-csv를 사용합니다.

    b. 해당 리포지토리에서 GroupId, ArtifactIdVersion 값을 수집합니다. 수집하는 값이 클러스터와 일치하는지 확인합니다. 이 경우에는 Scala 2.11 및 Spark 1.5.0 패키지를 사용하고 있지만, 해당 클러스터에 적합한 다른 Scala 또는 Spark 버전을 선택해야 할 수 있습니다. Spark Jupyter 커널에서 또는 Spark 제출 시 scala.util.Properties.versionString을 실행하여 클러스터에서 Scala 버전을 찾을 수 있습니다. Jupyter Notebook에서 sc.version을 실행하여 클러스터에서의 Spark 버전을 찾을 수 있습니다.

    Use external packages with Jupyter Notebook.

    c. 콜론(:)으로 구분된 세 개의 값을 연결합니다.

    com.databricks:spark-csv_2.11:1.5.0
    
  6. %%configure Magic을 사용하여 코드 셀을 실행합니다. 이렇게 하면 제공된 패키지를 사용하도록 기본 Livy 세션이 구성됩니다. 이제 아래와 같이 노트북의 다음 셀에서 패키지를 사용할 수 있습니다.

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

    HDInsight 3.4 이하의 경우 다음 코드 조각을 사용해야 합니다.

    val df = sqlContext.read.format("com.databricks.spark.csv").
    option("header", "true").
    option("inferSchema", "true").
    load("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
  7. 아래와 같이 코드 조각을 실행하여 이전 단계에서 만든 데이터 프레임의 데이터를 볼 수 있습니다.

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

참고 항목

시나리오

애플리케이션 만들기 및 실행

도구 및 확장

리소스 관리