在 HdInsight 上使用 PySpark3 中的附加库

Use additional library in PySpark3 on HdInsight

我正在尝试安装 Shapely 库,但是当我导入它时,我收到错误消息:

> from shapely.geometry import Point
No module named 'shapely'
Traceback (most recent call last):
ImportError: No module named 'shapely' 

我的内核是:

cat /usr/local/share/jupyter/kernels/pyspark3kernel/kernel.json
{"argv":["python","-m","sparkmagic.kernels.pyspark3kernel.pyspark3kernel", "-f", "{connection_file}"],
 "display_name":"PySpark3"
}

我检查了其他库的安装位置:

> import pandas 
> pandas.__file__
'/usr/bin/anaconda/envs/py35/lib/python3.5/site-packages/pandas/__init__.py'

Shapely 安装在同一文件夹中:

/usr/bin/anaconda/envs/py35/lib/python3.5/site-packages$ ls *hapely*
shapely:
affinity.py  _buildcfg.py  ctypes_declarations.py  examples   geometry   geos.py  __init__.py  linref.py  predicates.py  __pycache__  strtree.py   validation.py  wkb.py
algorithms   coords.py     errors.py               ftools.py  _geos.pxi  impl.py  iterops.py   ops.py     prepared.py    speedups     topology.py  vectorized     wkt.py

Shapely-1.6.3.dist-info:
DESCRIPTION.rst  INSTALLER  METADATA  metadata.json  RECORD  top_level.txt  WHEEL

仅供参考,我的火花来自 HD Insight 集群。

我应该做什么或检查以修复此库?如果您需要更多详细信息,请告诉我。


编辑:

我刚发现

%%local
from shapely.geometry import Point

工作得很好...因此,我认为我的库没有安装在集群上,而是安装在本地。如何在集群上部署它?

由于是spark集群,每个节点都要安装lib。 因此,我需要在HD Insight界面通过"script action"执行安装命令。 但是,由于我使用的是虚拟环境,因此该命令需要添加 -n env 选项。

运行 的最终命令是:

#!/usr/bin/env bash

/usr/bin/anaconda/bin/conda install -c conda-forge shapely -n py35