从pycharm在pyspark工作

我正在尝试使用pycharm为pyspark创建一些脚本 . 虽然我找到了关于如何连接它们的多种解释(例如How to link PyCharm with 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'大多数聚合函数的类似错误apepars(例如col,count)

我该如何解决这个问题?

回答(2)

2 years ago

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

Update

如果您查看this thread,您可以看到该主题的一些进步 . This有大多数东西的工作界面,here是一些更多的信息 .

2 years ago

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

如果你真的想直接从PyCharm运行它们,那么有一个很棒的github项目叫做findspark,它允许你做你想要的 .

安装库,只需添加到代码顶部即可

import findspark
findspark.init()

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