为什么此 python 代码在 pyspark 中有效,但在 spark-submit 中无效?

Why does this python code work in the pyspark but not in spark-submit?

我对 python 相当缺乏经验,而且我在获取一些代码时遇到了问题 运行ning。

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

您的集群运行 Python 2.6,它不支持字典理解语法。

要么使用生成器表达式加上 dict() 函数(参见 Alternative to dict comprehension prior to Python 2.7), or configure your cluster to deploy Python 2.7

使用 dict() 你的行将是:

counts = dict((key, len(list(group))) for key, group in it.groupby(sorted(topics)))