2017-05-04 1 views
1

Spark SQLを使用して結合操作をカスタム結合に変換する必要があります。 (カスタムプランへの論理プラン)。私は火花がカスタムに結合操作を変える戦略を書かれている はSpark:CatalystがDataframeで戦略を追加

object CustomStrategy extends Strategy { 
     def apply(plan: LogicalPlan): Seq[SparkPlan] = plan match { 
     case Join(left, right, Inner, Some(condition)) 
     => CustomJoin(df1, df2, left.output:: right.output) :: Nil 
    case _ => Nil } } 

に参加することではなくlogicalPlanよりも、データフレームにCustomJoin操作を表現することは可能ですか?入力として2つのデータフレームを取ることを意味しますか?

答えて

0

いいえべきSparkPlanから組み立て実行ツリー(いなくてもLogicalPlan!)オブジェクト。 Dataframe自体は計画作成の対象であるため、物理レベルでデータフレームを使用することはできません。

あなたがSparkPlan提供し、あなたのCustomJoinにそれを渡すために、後者の戦略を依頼するplanLater(logicalPlan)メソッドを呼び出すことができますが。次に、doExecuteメソッドの内部で、RDDを取得するために子のexecuteメソッドを呼び出すことができます。