を指定すると、r.name
またはr.age
をそれぞれ使用して、ドット表記を使用してPySpark 要素にアクセスできます。名前が変数element
に保存されている要素を取得する必要がある場合はどうなりますか? 1つの方法はr.toDict()[element]
です。しかし、大きな数字のDataFrame
があり、そのデータフレームの各行に関数をマップしたい場合を考えてみましょう。我々は確かしかし、すべての行にtoDict()
を呼び出すと、非常に非効率になると思わpPySpark行オブジェクト:変数名で行要素にアクセスする
def f(row, element1, element2):
row = row.asDict()
return ", ".join(str(row[element1]), str(row[element2]))
result = dataframe.map(lambda row: f(row, 'age', 'name'))
ような何かを行うことができます。より良い方法がありますか?
>おそらく 'filter' 例を示すことができますが、私はこのために' filter'を使う方法を理解できません。 –
私の間違い申し訳ありませんが、私の小さな説明の第二部分は正しいです。 'map'は並列化が容易なため、最も速いジョブの1つです。 –
私は 'map'が良いことを知っています。私はそれをより良くしたいと思いますが、すべての行をdictに変換する必要はありません –