为啥此 python 代码在 pyspark 中有效,但在 spark-submit 中无效?
Posted
技术标签:
【中文标题】为啥此 python 代码在 pyspark 中有效,但在 spark-submit 中无效?【英文标题】:Why does this python code work in the pyspark but not in spark-submit?为什么此 python 代码在 pyspark 中有效,但在 spark-submit 中无效? 【发布时间】:2016-01-28 18:47:29 【问题描述】:我对 python 相当缺乏经验,并且在运行一些代码时遇到了麻烦。
counts = key:len(list(group)) for key, group in it.groupby(sorted(topics))
该行将以pyspark
(交互模式)运行,但如果我尝试spark-submit
,我会得到SyntaxError
异常。以下代码是等效的,并且在两种情况下都可以运行:
counts =
for key, group in it.groupby(sorted(topics)):
counts[key] = len(list(group))
谁能告诉我为什么第一个代码在 spark-submit 中不起作用。如果有所不同,则代码将在函数 1 选项卡中执行。
我使用字典理解得到的异常:
Traceback (most recent call last):
File "./sessions.py", line 24, in <module>
execfile("./sessionSearch.py")
File "./sessionSearch.py", line 50
counts = poop:len(list(group)) for poop, group in it.groupby(sorted(topics))
^
SyntaxError: invalid syntax
【问题讨论】:
请说明您遇到的具体语法错误。 【参考方案1】:您的集群运行 Python 2.6,它不支持字典理解语法。
要么使用生成器表达式加上dict()
函数(请参阅Alternative to dict comprehension prior to Python 2.7),要么使用configure your cluster to deploy Python 2.7。
使用dict()
您的线路将是:
counts = dict((key, len(list(group))) for key, group in it.groupby(sorted(topics)))
【讨论】:
以上是关于为啥此 python 代码在 pyspark 中有效,但在 spark-submit 中无效?的主要内容,如果未能解决你的问题,请参考以下文章
在 zeppelin 中使用从 %pyspark 到 %python 的 Dataframe