gpt4 book ai didi

apache-spark - PySpark 1.6.2 | orderBy/sort 之后的collect()

转载 作者:行者123 更新时间:2023-12-02 01:39:46 25 4
gpt4 key购买 nike

我不明白这个简单的 PySpark 代码片段的行为:

# Create simple test dataframe
l = [('Alice', 1),('Pierre', 3),('Jack', 5), ('Paul', 2)]
df_test = sqlcontext.createDataFrame(l, ['name', 'age'])

# Perform filter then Take 2 oldest
df_test = df_test.sort('age', ascending=False)\
.filter('age < 4') \
.limit(2)


df_test.show(2)
# This outputs as expected :
# +------+---+
# | name|age|
# +------+---+
# |Pierre| 3|
# | Paul| 2|
# +------+---+

df_test.collect()
# This outputs unexpectedly :
# [Row(name=u'Pierre', age=3), Row(name=u'Alice', age=1)]

这是collect()函数的预期行为吗?如何以保持正确顺序的列表形式检索我的列?

谢谢

最佳答案

我必须使用排序器 UDF 来解决此问题

def sorter(l):
import operator
res = sorted(l, key =operator.itemgetter(0))
L1=[item[1] for item in res]
#return " ".join(str(x) for x in L)
return "".join(L1)

sort_udf = udf(sorter)

关于apache-spark - PySpark 1.6.2 | orderBy/sort 之后的collect(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43738923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com