spark.sql.crossJoin.enabled для Spark 2.x

apache-spark google-cloud-dataproc

7688 просмотра

3 ответа

Я использую «предварительный просмотр» Google DataProc Image 1.1 с Spark 2.0.0. Для завершения одной из моих операций я должен завершить декартово произведение. Начиная с версии 2.0.0 был создан параметр конфигурации spark (spark.sql.cross Join.enabled), который запрещает декартовы продукты, и создается исключение. Как установить spark.sql.crossJoin.enabled = true, предпочтительно с помощью действия инициализации? spark.sql.crossJoin.enabled=true

Автор: Stijn Источник Размещён: 04.10.2019 11:46

Ответы (3)


4 плюса

Решение

Для изменения значений параметров конфигурации по умолчанию в Dataproc вам даже не нужно действие init, вы можете использовать флаг --properties при создании кластера из командной строки:

gcloud dataproc clusters create --properties spark:spark.sql.crossJoin.enabled=true my-cluster ...
Автор: Dennis Huo Размещён: 17.08.2016 03:32

19 плюса

Spark> = 3,0

spark.sql.crossJoin.enableпо умолчанию верно ( SPARK-28621 ).

Spark> = 2,1

Вы можете использовать crossJoin:

df1.crossJoin(df2)

Это делает ваше намерение явным и сохраняет более консервативную конфигурацию для защиты от непреднамеренных перекрестных объединений.

Spark 2.0

Свойства SQL могут быть установлены динамически во время выполнения с помощью RuntimeConfig.setметода, поэтому вы должны иметь возможность вызывать

spark.conf.set("spark.sql.crossJoin.enabled", true)

всякий раз, когда вы хотите явно разрешить декартово произведение.

Автор: zero323 Размещён: 17.08.2016 02:56

1 плюс

В тестах набора запросов TPCDS есть запросы, которые содержат, CROSS JOINSи если вы явно не напишите CROSS JOINили динамически не установите для свойства Spark значение по умолчанию значение true, Spark.conf.set("spark.sql.crossJoin.enabled", true)вы столкнетесь с ошибкой исключения.

Ошибка появляется в запросах TPCDS 28, 61, 88 и 90, потому что исходный синтаксис запроса из Комитета обработки транзакций (TPC) содержит запятые, а операция соединения по умолчанию в Spark является внутренним соединением. Моя команда также решила использовать CROSS JOINвместо изменения свойств Spark по умолчанию.

Автор: Pat Размещён: 01.02.2017 12:35
Вопросы из категории :
32x32