如何在Amazon EMR的JupyterLab中添加自定义Python 3.11作为新内核
在Amazon EMR 7.x的JupyterLab中添加Python 3.11内核
环境与已完成操作
- 使用默认搭载Python 3.9的Amazon EMR 7.x版本
- 依据AWS官方示例文档完成自定义Python 3.11的安装
所用EMR引导脚本
#!/usr/bin/env bash set -e PYTHON_VERSION=3.11.7 sudo yum --assumeyes install \ bzip2-devel \ expat-devel \ gcc \ libffi-devel \ make \ systemtap-sdt-devel \ tar \ zlib-devel curl --silent --fail --show-error --location "https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz" | tar -x -J -v cd "Python-${PYTHON_VERSION}" export CFLAGS="-march=native" ./configure \ --enable-loadable-sqlite-extensions \ --with-dtrace \ --with-lto \ --enable-optimizations \ --with-system-expat \ --prefix="/usr/local/python${PYTHON_VERSION}" sudo make altinstall sudo "/usr/local/python${PYTHON_VERSION}/bin/python${PYTHON_VERSION%.*}" -m pip install --upgrade pip echo "# Install my Amazon EMR cluster-scoped dependencies" sudo curl --silent --fail --show-error --location --remote-name --output-dir /usr/lib/spark/jars/ https://repo1.maven.org/maven2/org/apache/sedona/sedona-spark-shaded-3.4_2.12/1.5.0/sedona-spark-shaded-3.4_2.12-1.5.0.jar sudo curl --silent --fail --show-error --location --remote-name --output-dir /usr/lib/spark/jars/ https://repo1.maven.org/maven2/org/datasyslab/geotools-wrapper/1.5.0-28.2/geotools-wrapper-1.5.0-28.2.jar "/usr/local/python${PYTHON_VERSION}/bin/python${PYTHON_VERSION%.*}" -m pip install \ apache-sedona[spark]==1.5.0
验证结果
- Spark环境下Python版本验证成功:
import sys from pyspark.sql import SparkSession SparkSession.builder.getOrCreate() print(sys.version_info) # sys.version_info(major=3, minor=11, micro=7, releaselevel='final', serial=0) assert (sys.version_info.major, sys.version_info.minor) == (3, 11)
验证截图:
- SSH登录主节点可见Python 3.11目录:
[hadoop@ip-172-31-177-28 ~]$ cd /usr/local [hadoop@ip-172-31-177-28 local]$ ls bin etc games include lib lib64 libexec man python3.11.7 sbin share src
遇到的问题
- 在JupyterLab中选择PySpark或Python 3内核时,执行代码仍显示使用Python 3.9:
import sys print(sys.version_info) # sys.version_info(major=3, minor=9, micro=16, releaselevel='final', serial=0)
- 在JupyterLab的终端中查看
/usr/local目录,看不到python3.11.7文件夹:
[notebook@ip-10-131-38-159 /]$ cd /usr/local/ [notebook@ip-10-131-38-159 local]$ ls bin etc games include lib lib64 libexec sbin share src
猜测JupyterLab运行在Docker容器中,请问如何在该JupyterLab中添加Python 3.11作为内核?
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

