Outras opções de configuração
Nesta página, você encontra descrições sobre as opções que podem ser especificadas para o conector Amazon Redshift Spark.
Tamanho máximo das colunas de string
O Redshift cria colunas de string como colunas de texto ao criar tabelas, que são armazenadas como VARCHAR(256). Se você quiser colunas que ofereçam suporte a tamanhos maiores, poderá usar maxlength para especificar o comprimento máximo das colunas de string. Veja a seguir um exemplo de como especificar maxlength
.
columnLengthMap.foreach { case (colName, length) => val metadata = new MetadataBuilder().putLong("maxlength", length).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }
Tipo de coluna
Para definir um tipo de coluna, use o campo redshift_type
.
columnTypeMap.foreach { case (colName, colType) => val metadata = new MetadataBuilder().putString("redshift_type", colType).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }
Codificação de compactação de uma coluna
Para usar uma codificação de compressão específica em uma coluna, use o campo de codificação. Para obter uma lista completa das codificações de compressão compatíveis, consulte Codificações de compressão.
Descrição de uma coluna
Para definir uma descrição, use o campo description
.
Autenticação entre Redshift e Amazon S3
Por padrão, o resultado é descarregado no Amazon S3 no formato parquet. Para descarregar o resultado como um arquivo de texto delimitado por barras, especifique a opção a seguir.
.option("unload_s3_format", "TEXT")
Instruções de pushdown
Parameter | Obrigatório | Padrão | Descrição |
---|---|---|---|
spark.datasource.redshift.community.autopushdown.lazyMode | Não | Verdadeiro | Especifica se o conector deve executar lentamente as instruções de aplicação do Redshift. Se for verdadeiro, o conector Spark recuperará todos os modelos e as informações relacionados antes de executar a consulta, o que geralmente melhora a performance. Se for falso, o conector Spark executará as instruções de aplicação imediatamente no thread principal do driver do Spark e será serializado em todas as expressões. |
Parâmetros do conector
O mapa de parâmetros ou OPTIONS
no Spark SQL é compatível com as seguintes configurações.
Parameter | Obrigatório | Padrão | Descrição |
---|---|---|---|
dbtable | Sim, a menos que a consulta seja especificada | N/D | A tabela para criar ou ler no Redshift. Este parâmetro é necessário ao salvar dados no Redshift. |
consulta | Sim, a menos que dbtable seja especificado | N/D | A consulta para ler do Redshift. |
usuário | Não | N/D | O nome de usuário do Redshift. Deve ser usado com o parâmetro password. Válido somente se o usuário e a senha não forem parâmetros no URL. Usar os dois causará um erro. |
password | Não | N/D | A senha do Redshift. Deve ser usado com o parâmetro user. Válido somente se o usuário e a senha não forem parâmetros no URL. Usar os dois causará um erro. |
url | Não | N/D |
Um URL de JDBC. O formato é jdbc:subprotocol://host:port/database?user=username&password=password. O subprotocolo pode ser postgresql ou Redshift, dependendo do driver JDBC que você carregou. Observe que um driver compatível com o Redshift deve estar no classpath e corresponder a esse URL. O host e a porta devem apontar para o nó principal do Redshift, então você deve configurar grupos de segurança e/ou VPC para permitir o acesso de sua aplicação de driver. O banco de dados é o nome do banco de dados do Redshift. O usuário e a senha são credenciais para acessar o banco de dados, que devem estar incorporadas nesse URL para JDBC, e o usuário do banco de dados deve ter as permissões necessárias para acessar a tabela. |
aws_iam_role | Somente se estiver usando perfis do IAM para autorizar operações COPY/UNLOAD do Redshift | N/D | ARN totalmente especificado do perfil do IAM anexado ao cluster do Redshift. |
forward_spark_s3_credentials | Não | Falso | Indica se essa biblioteca deve descobrir automaticamente as credenciais que o Spark usa para se conectar ao Amazon S3 e se deve encaminhar essas credenciais para o Redshift pelo driver JDBC. Essas credenciais são enviadas como parte da consulta JDBC. Portanto, recomendamos que você habilite a criptografia SSL com conexão JDBC ao usar essa opção. |
temporary_aws_access_key_id | Não | N/D | Chave de acesso da AWS. Você deve ter permissões de gravação no bucket do S3. |
temporary_aws_secret_access_key | Não | N/D | A chave de acesso secreta da AWS que corresponde à chave de acesso. |
temporary_aws_session_token | Não | N/D | Token de sessão da AWS que corresponde à chave de acesso fornecida. |
tempdir | Não | N/D | Um local gravável no Amazon S3. Usado para descarregar dados durante a leitura e dados do Avro para serem carregados no Redshift durante a gravação. Se você estiver usando uma fonte de dados do Redshift para o Spark como parte de um pipeline de ETL normal, poderá ser útil definir uma política de ciclo de vida em um bucket e usá-lo como um local temporário para esses dados. |
jdbcdriver | Não | Determinado pelo subprotocolo do URL de JDBC | O nome da classe do driver JDBC a ser usado. Essa classe deve estar no classpath. Na maioria dos casos, não deve ser necessário especificar essa opção, pois o nome de classe do driver apropriado deve ser determinado automaticamente pelo subprotocolo do URL de JDBC. |
diststyle | Não | Even | O estilo de distribuição do Redshift a ser usado ao criar uma tabela. As opções válidas são EVEN, KEY ou ALL. Ao usar KEY, você também deve definir uma chave de distribuição com a opção distkey. |
distkey | Não, a menos que esteja usando DISTSTYLE_KEY | N/D | O nome de uma coluna na tabela para usar como chave de distribuição ao criar uma tabela. |
sortkeyspec | Não | N/D | Uma definição completa de chave de classificação do Redshift. |
include_column_list | Não | Falso | Indica se essa biblioteca deve extrair automaticamente as colunas do esquema e adicioná-las ao comando COPY de acordo com as opções de mapeamento de colunas. |
description | Não | N/D | Uma descrição da tabela. A descrição é definida com o comando SQL COMMENT e aparece na maioria das ferramentas de consulta. Veja os metadados de description para definir descrições em colunas individuais. |
preactions | Não | N/D | Uma lista delimitada por ponto e vírgula dos comandos SQL a serem executados antes de carregar o comando COPY. Pode ser útil para executar comandos DELETE ou similares antes de carregar novos dados. Se o comando contiver %s, o nome da tabela será formatado antes do tempo de execução (caso você esteja usando uma tabela de preparação). Se esse comando falhar, ele será tratado como uma exceção. Se você estiver usando uma tabela de preparação, as alterações serão revertidas e restaurarão a tabela de backup se preactions falhar. |
extracopyoptions | Não | N/D |
Uma lista de opções extras para anexar ao comando COPY do Redshift ao carregar dados (como Observe que, como essas opções são anexadas ao final do comando |
sse_kms_key | Não | N/D | O ID da chave do AWS KMS a ser usado para criptografia do lado do servidor no S3 durante a operação UNLOAD do Redshift, em vez da criptografia padrão da AWS. O perfil do IAM do Redshift deve ter acesso à chave do KMS para gravar com ele, e o perfil do IAM do Spark deve ter acesso à chave para as operações de leitura. A leitura de dados criptografados não requer alterações (a AWS resolve isso), desde que o perfil do IAM do Spark tenha o acesso adequado. |
tempformat | Não | AVRO | O formato no qual salvar arquivos temporários no Amazon S3 ao gravar no Redshift. Os valores válidos são AVRO, CSV e CSV GZIP (CSV compactado). |
csvnullstring (experimental) | Não | Null | O valor da string a ser gravado para nulos ao usar o tempformat CSV. Deve ser um valor que não aparece nos dados reais. |
autopushdown | Não | Verdadeiro | Indica se é necessário realizar aplicação de predicados e consultas ao capturar e analisar os planos lógicos do Spark para operações SQL. As operações são traduzidas em uma consulta SQL e executadas no Redshift para melhorar a performance. |
autopushdown.s3_result_cache | Não | Falso | Armazene a consulta SQL em cache para descarregar dados do mapeamento de caminhos do Amazon S3 na memória, para que a mesma consulta não precise ser executada novamente na mesma sessão do Spark. Só é compatível quando o parâmetro autopushdown está ativado. Não recomendamos usar esse parâmetro ao misturar operações de leitura e gravação, pois os resultados armazenados em cache podem conter informações obsoletas. |
unload_s3_format | Não | Parquet | O formato para descarregar os resultados da consulta. As opções válidas são Parquet e Text, que especificam o descarregamento dos resultados da consulta no formato de texto delimitado por barras. |
extraunloadoptions | Não | N/D | Opções extras para anexar ao comando UNLOAD do Redshift. Não há garantia de que todas as opções funcionem, pois algumas opções podem entrar em conflito com outras opções definidas no conector. |
copydelay | Não | 30000 | O atraso (em ms) entre novas tentativas de operações COPY do Redshift. |
copyretrycount | Não | 2 | O número de novas tentativas para operações COPY do Redshift. |
tempdir_region | Não | N/D | A região da AWS em que Essa configuração é recomendada nas seguintes situações: 1) Quando o conector estiver em execução fora da AWS, pois a descoberta automática da região falhará e afetará negativamente a performance do conector. 2) Quando 3) Quando o conector estiver em execução em uma região diferente de |
secret.id | Não | N/D | O nome ou ARN do segredo armazenado no AWS Secrets Manager. É possível usar esse parâmetro para fornecer automaticamente as credenciais do Redshift, mas somente se o usuário, a senha e as credenciais de DbUser não forem passadas para o URL do JDBC ou como outras opções. |
secret.region | Não | N/D | A região da AWS principal, como Leste dos EUA (N. da Virgínia), para pesquisar o valor de Se você não especificar essa região, o conector tentará usar a Cadeia de fornecedores de credenciais padrão para resolver a região de 1) Quando o conector está em execução fora da AWS, pois a descoberta automática de região falhará e impedirá a autenticação com o Redshift Quando o conector estiver em execução em uma região diferente de |
secret.vpcEndpointUrl | Não | N/D | O URL do endpoint de DNS do PrivateLink para AWS Secrets Manager ao substituir a Cadeia de fornecedores de credenciais padrão. |
secret.vpcEndpointRegion | Não | N/D | A região do endpoint de DNS do PrivateLink para AWS Secrets Manager ao substituir a Cadeia de fornecedores de credenciais padrão. |
jdbc.* | Não | N/D | Parâmetros adicionais a serem transmitidos ao driver JDBC subjacente, em que o caractere curinga é o nome do parâmetro JDBC, como jdbc.ssl. Observe que o prefixo jdbc será removido antes de ser transmitido ao driver JDBC. Para ver todas as opções possíveis para o driver JDBC do Redshift, consulte Opções para a configuração do driver JDBC versão 2.1. |
rótulo | Não | " " | Um identificador a ser incluído no grupo de consultas definido ao executar consultas com o conector. Deve ter 100 caracteres ou menos e todos os caracteres devem ser unicodeIdentifierParts válidos. Se o identificador tiver mais de 100 caracteres, o excesso será removido. Ao executar uma consulta com o conector, o grupo de consultas será definido como uma string no formato JSON, como . Essa opção substitui o valor da chave lbl . |
nota
Confirmação: esta documentação contém exemplos de código e linguagem desenvolvidos pela Apache Software Foundation