'pandas on spark' 与 conda 一起使用的问题:"No module named 'pyspark.pandas'" 即使同时安装了 pyspark 和 pandas
Issue with 'pandas on spark' used with conda: "No module named 'pyspark.pandas'" even though both pyspark and pandas are installed
我已经在 Ubuntu 20.04 上安装了 Spark 3.1.3 和 Anaconda 4.12.0。
我已将 PYSPARK_PYTHON
设置为名为 my_env
的 conda 环境的 python bin
export PYSPARK_PYTHON=~/anaconda3/envs/my_env/bin/python
我使用 pip
在 conda 环境 my_env
上安装了几个包。这是 pip freeze
命令的部分输出:
numpy==1.22.3
pandas==1.4.1
py4j==0.10.9.3
pyarrow==7.0.0
N.B: 包 pyspark
未安装在 conda 环境 my_env
上。我希望能够在不同的 conda 环境中启动 pyspark shell,而不必在每个环境中重新安装 pyspark
(我只想修改 PYSPARK_PYTHON
)。这也可以避免在不同的 conda 环境中使用不同版本的 Spark(这有时是可取的,但并非总是如此)。
当我使用 pyspark
命令启动 pyspark shell 时,我确实可以导入 pandas
和 numpy
,这确认 PYSPARK_PYTHON
已正确设置( my_env
是唯一安装了 pandas
和 numpy
的 conda env,此外 pandas
和 numpy
没有安装在任何其他 python 安装上,即使在外面conda,最后,如果我更改 PYSPARK_PYTHON
,我将无法再导入 pandas
或 numpy
)。
在 pyspark shell 中,以下代码工作正常(创建并显示玩具 Spark 数据框):
sc.parallelize([(1,2),(2,4),(3,5)]).toDF(["a", "b"]).show()
但是,如果我尝试将上述数据帧转换为 pandas on spark 数据帧,则它不起作用。命令
sc.parallelize([(1,2),(2,4),(3,5)]).toDF(["t", "a"]).to_pandas_on_spark()
returns:
AttributeError: 'DataFrame' object has no attribute 'to_pandas_on_spark'
我尝试先导入pandas
(效果很好)然后然后pyspark.pandas
before 运行ning 上面的命令但是当我 运行
import pyspark.pandas as ps
我得到以下错误:
ModuleNotFoundError: No module named 'pyspark.pandas'
知道为什么会这样吗?
提前致谢
来自here,看来你需要apache spark 3.2,而不是3.1.3。更新到 3.2,您将拥有所需的 API.
我已经在 Ubuntu 20.04 上安装了 Spark 3.1.3 和 Anaconda 4.12.0。
我已将 PYSPARK_PYTHON
设置为名为 my_env
export PYSPARK_PYTHON=~/anaconda3/envs/my_env/bin/python
我使用 pip
在 conda 环境 my_env
上安装了几个包。这是 pip freeze
命令的部分输出:
numpy==1.22.3
pandas==1.4.1
py4j==0.10.9.3
pyarrow==7.0.0
N.B: 包 pyspark
未安装在 conda 环境 my_env
上。我希望能够在不同的 conda 环境中启动 pyspark shell,而不必在每个环境中重新安装 pyspark
(我只想修改 PYSPARK_PYTHON
)。这也可以避免在不同的 conda 环境中使用不同版本的 Spark(这有时是可取的,但并非总是如此)。
当我使用 pyspark
命令启动 pyspark shell 时,我确实可以导入 pandas
和 numpy
,这确认 PYSPARK_PYTHON
已正确设置( my_env
是唯一安装了 pandas
和 numpy
的 conda env,此外 pandas
和 numpy
没有安装在任何其他 python 安装上,即使在外面conda,最后,如果我更改 PYSPARK_PYTHON
,我将无法再导入 pandas
或 numpy
)。
在 pyspark shell 中,以下代码工作正常(创建并显示玩具 Spark 数据框):
sc.parallelize([(1,2),(2,4),(3,5)]).toDF(["a", "b"]).show()
但是,如果我尝试将上述数据帧转换为 pandas on spark 数据帧,则它不起作用。命令
sc.parallelize([(1,2),(2,4),(3,5)]).toDF(["t", "a"]).to_pandas_on_spark()
returns:
AttributeError: 'DataFrame' object has no attribute 'to_pandas_on_spark'
我尝试先导入pandas
(效果很好)然后然后pyspark.pandas
before 运行ning 上面的命令但是当我 运行
import pyspark.pandas as ps
我得到以下错误:
ModuleNotFoundError: No module named 'pyspark.pandas'
知道为什么会这样吗?
提前致谢
来自here,看来你需要apache spark 3.2,而不是3.1.3。更新到 3.2,您将拥有所需的 API.