'preview' Google DataProc Image1.1をSpark 2.0.0で使用しています。操作の1つを完了するには、デカルト積を完了する必要があります。バージョン2.0.0以降、=があります。 spark構成パラメーターが作成され(spark.sql.cross Join.enabled)、デカルト積を禁止し、例外がスローされます。できれば、を使用して、spark.sql.crossJoin.enabled = trueを設定するにはどうすればよいですか。初期化アクション?spark.sql.crossJoin.enabled=true
Dataprocで構成設定のデフォルト値を変更する場合、initアクションも必要ありません。コマンドラインからクラスターを作成するときに、 -propertiesフラグ を使用できます。
gcloud dataproc clusters create --properties spark:spark.sql.crossJoin.enabled=true my-cluster ...
Spark> = 3.0
spark.sql.crossJoin.enable
はデフォルトでtrueです( SPARK-28621 )。
スパーク> = 2.1
crossJoin
を使用できます:
df1.crossJoin(df2)
これにより、意図が明確になり、意図しないクロス結合から保護するために、より保守的な構成が維持されます。
Spark 2.0
SQLプロパティは、実行時にRuntimeConfig.set
メソッドを使用して動的に設定できるため、呼び出すことができるはずです。
spark.conf.set("spark.sql.crossJoin.enabled", true)
デカルト積を明示的に許可したいときはいつでも。
TPCDSクエリセットベンチマークには、_CROSS JOINS
_を含むクエリがあり、明示的に_CROSS JOIN
_を書き込むか、Sparkのデフォルトプロパティを動的にtrue Spark.conf.set("spark.sql.crossJoin.enabled", true)
に設定しない限り、例外エラーが発生します。
トランザクション処理委員会(TPC)の元のクエリ構文にコンマが含まれており、Sparkのデフォルトの結合操作が内部結合であるため、エラーはTPCDSクエリ28、61、88、および90に表示されます。私のチームは、Sparkのデフォルトのプロパティを変更する代わりに、_CROSS JOIN
_を使用することも決定しました。
私はそれがすべきだと思います
spark.conf.set("spark.sql.crossJoin.enabled", True)
そうでなければそれは与えるでしょう
NameError:名前 'true'が定義されていません