3
た後、私はこの単純なPySparkコードスニペットの振る舞いを理解していない:PySpark 1.6.2 |収集()のOrderBy /並べ替え
# 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)]
これはコレクト()関数の予想される動作ですか?正しい順序を維持するリストとして列を取得するにはどうすればよいですか?
おかげ
を解決するために、ソータUDFを使用する必要がありました。あなたが投稿したコードを実行したところ、期待通りの結果が得られました。 '[Row(name = u'Pierre '、age = 3)、Row(name = u'Paul'、age = 2)]' – Tim
(sqlcontext = HiveContext(sc) 'を最初に追加するのを忘れてしまいました)、同じ結果が得られました。スパークの設置に何か問題がありますか? – hyperc54
'sort'の前に' filter'を実行してください。不要な行のソートや 'sort'の代わりに' orderBy'を試してみることになります。 – Pushkr