apache-spark - plata - google cloud storage




spark.sql.crossJoin.enabled para Spark 2.x (2)

Estou usando o 'preview' Google DataProc Image 1.1 com Spark 2.0.0. Para concluir uma de minhas operações, tenho que concluir um produto cartesiano. Desde a versão 2.0.0, foi criado um parâmetro de configuração do spark (spark.sql.cross Join.enabled) que proíbe produtos cartesianos e uma exceção é lançada. Como posso definir spark.sql.crossJoin.enabled = true, de preferência usando uma ação de inicialização? spark.sql.crossJoin.enabled=true


Os benchmarks do conjunto de consultas TPCDS têm consultas que contêm CROSS JOINS e, a menos que você escreva CROSS JOIN explicitamente ou defina dinamicamente a propriedade padrão do Spark como true Spark.conf.set("spark.sql.crossJoin.enabled", true) ocorrerá uma exceção erro.

O erro aparece nas consultas TPCDS 28,61, 88 e 90 porque a sintaxe de consulta original do Transaction Processing Committee (TPC) contém vírgulas e a operação de junção padrão do Spark é uma junção interna. Minha equipe também decidiu usar CROSS JOIN em vez de alterar as propriedades padrão do Spark.


Para alterar os valores padrão das definições de configuração no Dataproc, você nem precisa de uma ação init, use o sinalizador --properties ao criar seu cluster a partir da linha de comando:

gcloud dataproc clusters create --properties spark:spark.sql.crossJoin.enabled=true my-cluster ...