Jupyter에서 Scala
11717 단어 docker-composeScalaJupyter스파크도커
왜, 스칼라?
Jupyter를 사용한다면 파이썬에서 좋지 않습니까? 라고 생각되는 분도 많을까 생각합니다.
그러나 이미 Scala로 작성된 자산 (코드)이 있으며,
해당 앱에 추가한다고 가정한 코드를 작성하고 싶습니다.
Scala를 좋아해! 라든지,
Scala를 시작하고 싶다거나,
인생 여러가지, 회사 이유도 여러가지 있다고 생각합니다.
(뭐, 단순히 필자가 Scala를 좋아하고, Spark-Shell 힘들지만, 일부러, pyspark의 API를 기억하는 것이 귀찮기 때문이라는 이유이기도 합니다.)
환경
다음의 환경이 사전에 정돈되어 있는 전제입니다.
필수
파이썬
3계
sbt
1.0.3
(시험하지 않지만 0.13 계에서도 괜찮지 않을까)
Scala
2.12.2
(어째서 2.12계로 한 거라든지・・・2.11계로 움직일 것입니다)
Jupyter Scala
0.4.2 (2017/11/14 현재 최신)
Jupyter kernel
0.4.1 (2017/11/14 현재 최신)
자바
OpenJDK 8
(Java 8이라면 Oracle JDK8에서도 좋을 것입니다. 이번에는 Amazon EMR에 접근하고 싶기 때문에 EMR 기본 Open JDK를 yum install하고 있습니다)
선택
오 S
Amazon Linux 2017.03의 Docker 이미지
(따라서 Python과 JVMM이 작동한다면 괜찮습니다. Windows의 경우 경로와 명령을 Windows로 바꿉니다.)
스파크
2.2.0
※ Jupyter에서 Scala를 움직이는 것만으로는 불필요합니다. Spark 앱을 실행하기 위해 빌드하는 단계를 위해 Spark를 실행하기 위한 설정을 구성합니다.
Docker 주위
Jupyter에서 Scala를 움직이면 필요하지 않습니다.
이번에는 Amazon EMR에 가까운 환경으로 만들고 싶었기 때문에 docker-compose를 사용하여
Spark 클러스터를 구축하고 master 노드에 Jupyter를 구축하여 호스트에서 액세스하도록 합니다.
다음의 환경이 사전에 정돈되어 있는 전제입니다.
필수
파이썬
3계
sbt
1.0.3
(시험하지 않지만 0.13 계에서도 괜찮지 않을까)
Scala
2.12.2
(어째서 2.12계로 한 거라든지・・・2.11계로 움직일 것입니다)
Jupyter Scala
0.4.2 (2017/11/14 현재 최신)
Jupyter kernel
0.4.1 (2017/11/14 현재 최신)
자바
OpenJDK 8
(Java 8이라면 Oracle JDK8에서도 좋을 것입니다. 이번에는 Amazon EMR에 접근하고 싶기 때문에 EMR 기본 Open JDK를 yum install하고 있습니다)
선택
오 S
Amazon Linux 2017.03의 Docker 이미지
(따라서 Python과 JVMM이 작동한다면 괜찮습니다. Windows의 경우 경로와 명령을 Windows로 바꿉니다.)
스파크
2.2.0
※ Jupyter에서 Scala를 움직이는 것만으로는 불필요합니다. Spark 앱을 실행하기 위해 빌드하는 단계를 위해 Spark를 실행하기 위한 설정을 구성합니다.
Docker 주위
Jupyter에서 Scala를 움직이면 필요하지 않습니다.
이번에는 Amazon EMR에 가까운 환경으로 만들고 싶었기 때문에 docker-compose를 사용하여
Spark 클러스터를 구축하고 master 노드에 Jupyter를 구축하여 호스트에서 액세스하도록 합니다.
구축 절차
Jupyter 설치
JupyterLab을 좋아한다고 말했습니까?
Spark를 사용하지 않으면 jupyter, notebook (or jupyterlab), py4j 당이 있으면 좋을지 모릅니다 (py4j도 필수인지는 수상할지도)
pip install jupyter
pip install notebook
pip install jupyterlab
pip --no-cache-dir install pandas pyspark
pip install py4j jupyter-spark lxml
pip install --upgrade beautifulsoup4 html5lib
jupyter nbextension install --py jupyter_spark
jupyter serverextension enable --py jupyter_spark
jupyter nbextension enable --py jupyter_spark
jupyter nbextension enable --py widgetsnbextension
jupyter serverextension enable --py jupyterlab --sys-prefix
pip install scipy scikit-learn pygments && \
pip3 install scipy scikit-learn pygments pandas pyspark ipykernel ipython
sbt 설치
이번은, Dockerfile 로 Docker Image 를 구축하고 있기 때문에, sudo
나름 doas
를 실시하고 있지 않습니다만, 필요에 따라서 적절히, sudo
나름 doas
##
# Dockerfile では
# ENV SBT_HOME /usr/local/sbt
# ENV PATH ${PATH}:${SBT_HOME}/bin
# と記述
##
echo "export SBT_HOME=/usr/local/sbt" >> .bashrc
echo "export PATH=${PATH}:${SBT_HOME}/bin" >> .bashrc
export SBT_VERSION=1.0.3
curl -sL "https://github.com/sbt/sbt/releases/download/v${SBT_VERSION}/sbt-${SBT_VERSION}.tgz" | tar -xz -C /usr/local
Jupyter kernel/Jupyter Scala 설치
# Jupyter Scala のインストール
curl -sL "https://github.com/jupyter-scala/jupyter-scala/archive/v0.4.2.tar.gz" | tar -xz -C /usr/local && \
cd /usr/local/ && \
ln -s jupyter-scala-0.4.2 jupyter-scala && \
cd jupyter-scala && \
sbt publishLocal
# Jupyter Kernel のインストール
curl -sL "https://github.com/jupyter-scala/jupyter-kernel/archive/v0.4.1.tar.gz" | tar -xz -C /usr/local &&\
cd /usr/local/ && \
ln -s jupyter-kernel-0.4.1 jupyter-kernel && \
cd jupyter-kernel && \
sbt publishLocal
# 仕上げ
# Windows の場合は https://github.com/jupyter-scala/jupyter-scala/blob/master/jupyter-scala.ps1 を使えば良さそう
# /root 配下じゃ無くても良さそう
curl -sL "https://raw.githubusercontent.com/alexarchambault/jupyter-scala/master/jupyter-scala" -o /root/jupyter-scala.sh && \
chmod 744 /root/jupyter-scala.sh && \
sed -e "s/2.11.11/2.12.4/gi" /root/jupyter-scala.sh && \
/root/jupyter-scala.sh && \
rm -f /root/jupyter-scala.sh
이제 Jupyter를 시작하면 다음과 같이 Jupyter에서 Scala를 사용할 수 있습니다.
※ JupyterLab 시작 화면
움직여 보자
각 셀에 다음과 같은 코드를 작성해 보았습니다.
import $ivy.`org.apache.spark::spark-sql:2.2.0`
import $ivy.`org.apache.hadoop:hadoop-aws:2.7.3`
import $ivy.`org.jupyter-scala::spark:0.4.2`
import org.apache.spark.sql.SparkSession
import org.apache.spark.{SparkConf, SparkContext}
//Configuration
import jupyter.spark.session._
val spark = JupyterSparkSession
.builder() // important - call this rather than SparkSession.builder()
.jupyter()
.master("local[*]")
.config("spark.driver.memory","2g")
.config("spark.memory.useLegacyMode", "true")
.appName("notebook")
.getOrCreate()
spark
.sparkContext
.parallelize(Array("Hello", "World", "!"))
.foreach(System.err.println)
spark.stop()
종속 라이브러리 참조
다음과 같이 기술한다.
$ivy.`group::artifact:version`
참고 : htps : // 기주 b. 코 m / 쥬 py rs? / 쥬 py rs? # s 파
요약
sbt와 Jupyter kernel/Jupyter Scala를 설치하면 된다.
여담
직장 등에서 프록시를 통과하는 경우
htps : // 기주 b. 코 m / 쥬 py rs 또는 / 쥬 py rs / / 이스에 s / 21
대로 실시하면 동작하지 않고.
다음과 같이 argv 섹션에 추가하면 작동했습니다.
{
"language" : "scala",
"display_name" : "Scala",
"argv" : [
"java",
"-noverify",
"-Dhttp.proxyHost=...",
"-Dhttp.proxyPort=...",
"-Dhttps.proxyHost=...",
"-Dhttps.proxyPort=...",
"-jar",
"/root/.local/share/jupyter/kernels/scala/launcher.jar",
"launch",
"-r",
"sonatype:releases",
"-r",
"sonatype:snapshots",
"-i",
"ammonite",
"-I",
"ammonite:org.jupyter-scala:ammonite-runtime_2.11.11:0.8.3-1",
"-I",
"ammonite:org.jupyter-scala:scala-api_2.11.11:0.4.2",
"org.jupyter-scala:scala-cli_2.11.11:0.4.2",
"--",
"--id",
"scala",
"--name",
"Scala",
"--quiet",
"--connection-file",
"{connection_file}"
]
}
Reference
이 문제에 관하여(Jupyter에서 Scala), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/poad1010/items/a67fc9032562b9d73ba5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install jupyter
pip install notebook
pip install jupyterlab
pip --no-cache-dir install pandas pyspark
pip install py4j jupyter-spark lxml
pip install --upgrade beautifulsoup4 html5lib
jupyter nbextension install --py jupyter_spark
jupyter serverextension enable --py jupyter_spark
jupyter nbextension enable --py jupyter_spark
jupyter nbextension enable --py widgetsnbextension
jupyter serverextension enable --py jupyterlab --sys-prefix
pip install scipy scikit-learn pygments && \
pip3 install scipy scikit-learn pygments pandas pyspark ipykernel ipython
##
# Dockerfile では
# ENV SBT_HOME /usr/local/sbt
# ENV PATH ${PATH}:${SBT_HOME}/bin
# と記述
##
echo "export SBT_HOME=/usr/local/sbt" >> .bashrc
echo "export PATH=${PATH}:${SBT_HOME}/bin" >> .bashrc
export SBT_VERSION=1.0.3
curl -sL "https://github.com/sbt/sbt/releases/download/v${SBT_VERSION}/sbt-${SBT_VERSION}.tgz" | tar -xz -C /usr/local
# Jupyter Scala のインストール
curl -sL "https://github.com/jupyter-scala/jupyter-scala/archive/v0.4.2.tar.gz" | tar -xz -C /usr/local && \
cd /usr/local/ && \
ln -s jupyter-scala-0.4.2 jupyter-scala && \
cd jupyter-scala && \
sbt publishLocal
# Jupyter Kernel のインストール
curl -sL "https://github.com/jupyter-scala/jupyter-kernel/archive/v0.4.1.tar.gz" | tar -xz -C /usr/local &&\
cd /usr/local/ && \
ln -s jupyter-kernel-0.4.1 jupyter-kernel && \
cd jupyter-kernel && \
sbt publishLocal
# 仕上げ
# Windows の場合は https://github.com/jupyter-scala/jupyter-scala/blob/master/jupyter-scala.ps1 を使えば良さそう
# /root 配下じゃ無くても良さそう
curl -sL "https://raw.githubusercontent.com/alexarchambault/jupyter-scala/master/jupyter-scala" -o /root/jupyter-scala.sh && \
chmod 744 /root/jupyter-scala.sh && \
sed -e "s/2.11.11/2.12.4/gi" /root/jupyter-scala.sh && \
/root/jupyter-scala.sh && \
rm -f /root/jupyter-scala.sh
각 셀에 다음과 같은 코드를 작성해 보았습니다.
import $ivy.`org.apache.spark::spark-sql:2.2.0`
import $ivy.`org.apache.hadoop:hadoop-aws:2.7.3`
import $ivy.`org.jupyter-scala::spark:0.4.2`
import org.apache.spark.sql.SparkSession
import org.apache.spark.{SparkConf, SparkContext}
//Configuration
import jupyter.spark.session._
val spark = JupyterSparkSession
.builder() // important - call this rather than SparkSession.builder()
.jupyter()
.master("local[*]")
.config("spark.driver.memory","2g")
.config("spark.memory.useLegacyMode", "true")
.appName("notebook")
.getOrCreate()
spark
.sparkContext
.parallelize(Array("Hello", "World", "!"))
.foreach(System.err.println)
spark.stop()
종속 라이브러리 참조
다음과 같이 기술한다.
$ivy.`group::artifact:version`
참고 : htps : // 기주 b. 코 m / 쥬 py rs? / 쥬 py rs? # s 파
요약
sbt와 Jupyter kernel/Jupyter Scala를 설치하면 된다.
여담
직장 등에서 프록시를 통과하는 경우
htps : // 기주 b. 코 m / 쥬 py rs 또는 / 쥬 py rs / / 이스에 s / 21
대로 실시하면 동작하지 않고.
다음과 같이 argv 섹션에 추가하면 작동했습니다.
{
"language" : "scala",
"display_name" : "Scala",
"argv" : [
"java",
"-noverify",
"-Dhttp.proxyHost=...",
"-Dhttp.proxyPort=...",
"-Dhttps.proxyHost=...",
"-Dhttps.proxyPort=...",
"-jar",
"/root/.local/share/jupyter/kernels/scala/launcher.jar",
"launch",
"-r",
"sonatype:releases",
"-r",
"sonatype:snapshots",
"-i",
"ammonite",
"-I",
"ammonite:org.jupyter-scala:ammonite-runtime_2.11.11:0.8.3-1",
"-I",
"ammonite:org.jupyter-scala:scala-api_2.11.11:0.4.2",
"org.jupyter-scala:scala-cli_2.11.11:0.4.2",
"--",
"--id",
"scala",
"--name",
"Scala",
"--quiet",
"--connection-file",
"{connection_file}"
]
}
Reference
이 문제에 관하여(Jupyter에서 Scala), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/poad1010/items/a67fc9032562b9d73ba5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
직장 등에서 프록시를 통과하는 경우
htps : // 기주 b. 코 m / 쥬 py rs 또는 / 쥬 py rs / / 이스에 s / 21
대로 실시하면 동작하지 않고.
다음과 같이 argv 섹션에 추가하면 작동했습니다.
{
"language" : "scala",
"display_name" : "Scala",
"argv" : [
"java",
"-noverify",
"-Dhttp.proxyHost=...",
"-Dhttp.proxyPort=...",
"-Dhttps.proxyHost=...",
"-Dhttps.proxyPort=...",
"-jar",
"/root/.local/share/jupyter/kernels/scala/launcher.jar",
"launch",
"-r",
"sonatype:releases",
"-r",
"sonatype:snapshots",
"-i",
"ammonite",
"-I",
"ammonite:org.jupyter-scala:ammonite-runtime_2.11.11:0.8.3-1",
"-I",
"ammonite:org.jupyter-scala:scala-api_2.11.11:0.4.2",
"org.jupyter-scala:scala-cli_2.11.11:0.4.2",
"--",
"--id",
"scala",
"--name",
"Scala",
"--quiet",
"--connection-file",
"{connection_file}"
]
}
Reference
이 문제에 관하여(Jupyter에서 Scala), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/poad1010/items/a67fc9032562b9d73ba5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)