のは、私は次のように何かを実行したいとしましょう:SparkR gapply - 関数は、複数行のRのデータフレームを返す
関数の戻り値は、複数の行を持っているlibrary(SparkR)
...
df = spark.read.parquet(<some_address>)
df.gapply(
df,
df$column1,
function(key, x) {
return(data.frame(x, newcol1=f1(x), newcol2=f2(x))
}
)
。明確にするために、ドキュメントの例(悲しいことに、Sparkマニュアルの例がほんの少し単純なところにある)は、これが私が期待したとおりに処理されるかどうかを識別するのに役立ちません。
gapply()呼び出しの結果にsum(1..k、n_k)行が含まれるように、グループごとにn_k出力行を持つDataFrameで作成されたk個のグループの結果は、ここで、キー値は、キーkの各グループのn_k行ごとに複製されます...しかし、スキーマフィールドは、これがどのように処理されるかではないことを私に示唆しています。結果は単一の行にプッシュされます。
これは明らかですが、理論的です(私の実際のコード例は分かりません)。誰かがそのような機能が実際にどのように扱われるかを検証し説明することができますか?
投稿ごとのルール私はすでにドキュメントをよく読んでおり、ドキュメントの明快さは見る人の目線です(複数行のデータフレームが許可されているかどうかはっきりしませんでした。 )。恒等変換は明白な例になるでしょう。もしそれがうまくいくならば、それはドキュメントの中にあるべきです - そうではありません。また、2番目のサンプル関数は、外側にある種によってグループ化しているので、内側の列にはグループ化しているので、1行しか返さないでしょう。内部のdpylr :: group_byは冗長です。 –
2番目の例は、行の数が入力の行の数と異なる場合があることを示しています。実際に 'gapply'は' dplyr :: group_by%>%dplyr :: summarize'や 'split%>%lapply'と同等のものだと考えています – zero323
それでも、アイデンティティといくつかの他の例を実行して自分で確認しました複数行のデータフレームを返すことは有効です。この回答を受け入れ、SparkRの文書に関する警告にもかかわらず。 –