CSVファイルを読み込み、特定のフィールドの一意の値の出現をカウントするspark dataset apisを試行します。私が考えるべきアプローチの1つは、期待どおりに動作していないということです。何が見落とされているのか教えてください。私は以下のようなバグのあるアプローチと同様に、両方のバグを報告しています。spark dataset:列から一意の値の出現回数を取得する方法
// get all records from a column
val professionColumn = data.select("profession")
// breakdown by professions in descending order
// ***** DOES NOT WORKS ***** //
val breakdownByProfession = professionColumn.groupBy().count().collect()
// ***** WORKS ***** //
val breakdownByProfessiond = data.groupBy("profession").count().sort("count") // WORKS
println (s"\n\nbreakdown by profession \n")
breakdownByProfession.show()
さらに効率的な方法を教えてください。私の推測は最初のもの(最初にそれを試みる理由) また、そのような操作の出力をデータセットAPIを使用してテキストファイルに保存する最良の方法は何ですか?
おかげで以下のように列名を提供する必要があります - あなたは、実行計画を見て、これを確認することができます列名を指定している間にデータセット全体に対して操作を行うのと比べて、パフォーマンスが向上しませんか? – coredump
この場合、最初に選択するとパフォーマンスは向上しません。これは、 'select'が' groupby'の下にプッシュされるためです。 – ShirishT
あなたは、両方の選択肢、つまり 'data.select("職業 ")。groupBy("職業 ")。countplain'と' data.groupBy( "職業")の両方の説明計画を見ることができます。説明する。どちらの場合も、選択が最初に行われ、次にグループ化されることに注意してください。 – ShirishT