スパーク >= 2.3.0
Spark 2.3.0 以降、PandasSeries
またはDataFrame
パーティションまたはグループを使用できます。例を参照してください。
スパーク < 2.3.0
ローカル PySpark を作成する自然な方法は何ですか?
そのようなことはない。Spark 分散データ構造をネストできないか、アクションまたは変換をネストできない別のパースペクティブを好む。
またはパンダデータフレーム
比較的簡単ですが、少なくともいくつかのことを覚えておく必要があります。
- Pandas と Spark DataFrames は、リモートでさえ同等ではありません。これらは異なる構造であり、異なるプロパティを持ち、一般に、それらを別のものに置き換えることはできません。
- パーティションは空にすることができます。
- 辞書を渡しているようです。ベースの Python 辞書は順序付けされていないことに注意してください (
collections.OrderedDict
例とは異なります)。そのため、列を渡すと期待どおりに機能しない場合があります。
import pandas as pd
rdd = sc.parallelize([
{"x": 1, "y": -1},
{"x": -3, "y": 0},
{"x": -0, "y": 4}
])
def combine(iter):
rows = list(iter)
return [pd.DataFrame(rows)] if rows else []
rdd.mapPartitions(combine).first()
## x y
## 0 1 -1