mapInArrow
現在の DataFrame 内のバッチのイテレータを、入力と出力の両方としてpyarrow.RecordBatch秒に対して実行される Python ネイティブ関数を使用してマッピングし、結果を DataFrame として返します。
構文
mapInArrow(func: "ArrowMapIterFunction", schema: Union[StructType, str], barrier: bool = False, profile: Optional[ResourceProfile] = None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
| function |
|
| データ型または文字列 | PySpark における |
| bool型、オプション、デフォルト値はFalse | バリアモード実行を使用することで、ステージ内のすべてのPythonプロセスが同時に起動されることを保証します。 |
| リソースプロファイル(オプション) | mapInArrowで使用するオプションのリソースプロファイル。 |
戻り値
DataFrame
例
Python
import pyarrow as pa
df = spark.createDataFrame([(1, 21), (2, 30)], ("id", "age"))
def filter_func(iterator):
for batch in iterator:
pdf = batch.to_pandas()
yield pa.RecordBatch.from_pandas(pdf[pdf.id == 1])
df.mapInArrow(filter_func, df.schema).show()
# +---+---+
# | id|age|
# +---+---+
# | 1| 21|
# +---+---+
df.mapInArrow(filter_func, df.schema, barrier=True).collect()
# [Row(id=1, age=21)]