私の仕事の場合、アソシエーションキーに基づいてマージする2つの大きなDataFramesがあります。 join
を使用すると、タスクの完了に時間がかかります。Cogroup on Spark DataFrames
Apache Sparkの結合よりも好ましいのはcogroup
です。誰でもDataFrames上でcogroup
を使用する方法を指摘したり、2つの大きなFataFramesをマージするためのより良い方法を提案することができます。
は
私の仕事の場合、アソシエーションキーに基づいてマージする2つの大きなDataFramesがあります。 join
を使用すると、タスクの完了に時間がかかります。Cogroup on Spark DataFrames
Apache Sparkの結合よりも好ましいのはcogroup
です。誰でもDataFrames上でcogroup
を使用する方法を指摘したり、2つの大きなFataFramesをマージするためのより良い方法を提案することができます。
は
DataFrame
はcogroup
機能のいずれかの同等のものを提供していないと複雑なオブジェクトは、スパークSQLで第一級オブジェクトではありません、ありがとうございました。複雑な構造で使用できる一連の操作はかなり制限されているため、一般的にカスタム表現を作成したり、UDFを使用したり、パフォーマンスのペナルティを支払う必要があります。さらに、Spark SQLは、同じjoin
ロジックをプレーンRDDs
として使用しません。
RDDについて。 がjoin
より好都合であるかもしれない境界ケースが存在するが、典型的には、完全なデータセットの結果 - >デカルト積でない限り、そうであってはならない。 RDD上のすべての結合がcogroup
とそれに続くflatMapValues
を使用して表され、後者の操作がローカルなので、実際のオーバーヘッドは出力タプルの作成だけです。
テーブルにプリミティブ型だけが含まれている場合は、最初にcollect_list
という列を集約することで、共同グループのような動作を模倣することができますが、ここではパフォーマンスは期待できません。
'' 'cogroup''が' 'join''よりも好都合なケースがたくさんあります。 '' 'Cogroup''は' '' groupBy''セマンティクスを持つ結合演算子です。データを文脈に入れることは非常に便利です。複雑なオブジェクトはまだSparkのファーストクラスの市民ではありませんが、読み込み時に結合の必要性を取り除くことで、インパラのパフォーマンスが大幅に向上します。 – jwinandy