从 pycharm 开始使用 pyspark

working on pyspark from pycharm

我正在尝试使用 pycharm 为 pyspark 创建一些脚本。 虽然我找到了关于如何连接它们的多种解释(例如 ),但并非一切正常。

我所做的基本上是正确设置环境变量:

echo $PYTHONPATH 
:/usr/local/spark/python:/usr/local/spark/python/lib/py4j-0.9-src.zip
echo $SPARK_HOME 
/usr/local/spark

在我的代码中:

appName = "demo1"
master = "local"
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)

问题是许多数据帧聚合函数显示为错误。例如我有以下几行:

from pyspark.sql import functions as agg_funcs
maxTimeStamp = base_df.agg(agg_funcs.max(base_df.time)).collect()

但 pycharm 声称:无法在 functions.py 中找到参考文献 'max' 大多数聚合函数(例如 col、count)都会出现类似的错误

我该如何解决这个问题?

在 PyCharm 中编写脚本很棒,但是对于 运行 宁他们我建议你直接从控制台使用 spark-submit 命令来执行它们。

如果你真的想 运行 直接从 PyCharm 那里得到一个很棒的 github 项目,叫做 findspark 它可以让你做你想要的.

安装库并添加到代码顶部

import findspark
findspark.init()

其余代码就在其下方,findspark 将为您完成所有工作!

这是由于 pycharm 中 python 分析的局限性。由于 pyspark 会动态生成它的一些功能。我实际上已经用 pycharm (https://youtrack.jetbrains.com/issue/PY-20200) 打开了一个问题。它提供了一些解决方案,基本上是手动编写一些接口代码。

更新:

如果您查看 this thread you can see some advancement in the topic. This has a working interface for most stuff and here 可以了解更多信息。

pycharm -> 设置 -> 项目 -> 项目结构 -> 添加根内容

select spark 安装文件夹的以下路径

  1. spark/python/lib/py4j.....sr.zip

  2. spark/python/lib/pyspark.zip