データセットとデータフレームベースの結合コマンドで傾斜ヒントを指定する方法How to Specify Skew Hints in Dataset and DataFrame-based Join Commands

DataFrame または Dataset オブジェクトを使用して join コマンドを実行するときに、データスキューによる少数のタスクの終了時にクエリがスタックしていることがわかった場合は、hint("skew") メソッドを使用して傾斜ヒントを指定できます。: df.hint("skew")します。When you perform a join command with DataFrame or Dataset objects, if you find that the query is stuck on finishing a small number of tasks due to data skew, you can specify the skew hint with the hint("skew") method: df.hint("skew"). 傾斜結合の最適化は、skew ヒントを指定する DataFrame で実行されます。The skew join optimization is performed on the DataFrame for which you specify the skew hint.

基本ヒントに加えて、[列名]、[列名の一覧]、[列名]、[傾斜値] のパラメーターの組み合わせを使用して、hint メソッドを指定できます。In addition to the basic hint, you can specify the hint method with the following combinations of parameters: column name, list of column names, and column name and skew value.

  • DataFrame と列名。DataFrame and column name. 傾斜結合の最適化は、DataFrame の指定された列で実行されます。The skew join optimization is performed on the specified column of the DataFrame.

    df.hint("skew", "col1")
    
  • DataFrame と複数の列。DataFrame and multiple columns. 傾斜結合の最適化は、DataFrame 内の複数の列に対して実行されます。The skew join optimization is performed for multiple columns in the DataFrame.

    df.hint("skew", ["col1","col2"])
    
  • DataFrame、列名、および傾斜値。DataFrame, column name, and skew value. 傾斜結合の最適化は、傾斜値を持つ列のデータに対して実行されます。The skew join optimization is performed on the data in the column with the skew value.

    df.hint("skew", "col1", "value")
    

Example

この例では、join 操作に関係する複数の DataFrame オブジェクトの傾斜ヒントを指定する方法を示します。This example shows how to specify the skew hint for multiple DataFrame objects involved in a join operation:

val joinResults = ds1.hint("skew").as("L").join(ds2.hint("skew").as("R"), $"L.col1" === $"R.col1")