Opciones de escritura sin servidor para conectores agrupados

Al escribir en un origen de datos externo mediante un conector agrupado en proceso sin servidor, solo se admite un subconjunto de opciones de conector. En las tablas siguientes se enumeran las opciones admitidas por conector.

Para obtener instrucciones y ejemplos de configuración, consulte Orígenes de datos de Spark.

PostgreSQL

Se admiten las siguientes opciones al escribir en PostgreSQL en proceso sin servidor.

Option Description
host Nombre de host del servidor postgreSQL.
port Número de puerto. Valor predeterminado: 5432.
database Nombre de la base de datos a la que se va a conectar.
connectTimeout Tiempo máximo en segundos para esperar una conexión. 0 deshabilita el tiempo de espera.
user Nombre de usuario de la base de datos.
password Contraseña de base de datos.
dbtable Nombre de la tabla de destino. Admite nombres calificados de esquema (por ejemplo, myschema.mytable).
batchsize Número de filas que se van a insertar por lote. Valor predeterminado: 1000.
numPartitions Número de particiones de Spark para operaciones de escritura en paralelo.
queryTimeout Tiempo máximo en segundos para esperar a que se complete una consulta. 0 deshabilita el tiempo de espera.
isolationLevel Nivel de aislamiento de transacción: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READo SERIALIZABLE. Valor predeterminado: READ_UNCOMMITTED.
truncate Si truees , trunca la tabla de destino en overwrite modo en lugar de quitarla y volver a crearla. Valor predeterminado: false.
cascadeTruncate Si truees , aplica en cascada el truncamiento a las tablas con referencias de clave externa a la tabla de destino. Valor predeterminado: false.

SQL Server

Se admiten las siguientes opciones al escribir en SQL Server en proceso sin servidor.

Option Description
host Nombre de host de la instancia de SQL Server.
port Número de puerto. Valor predeterminado: 1433.
database Nombre de la base de datos a la que se va a conectar.
connectionTimeout Tiempo máximo en segundos para esperar una conexión. 0 deshabilita el tiempo de espera.
encrypt Si truees , cifra todos los datos enviados entre el cliente y el servidor mediante TLS. Valor predeterminado: false.
trustServerCertificate Si truees , confía en el certificado TLS del servidor sin validación. Solo para entornos de desarrollo. Valor predeterminado: false.
debug Si truees , habilita el registro de depuración detallado para el conector. Valor predeterminado: false.
user Nombre de usuario de la base de datos.
password Contraseña de base de datos.
authentication Tipo de autenticación. Valores admitidos: SqlPassword, ActiveDirectoryPassword, ActiveDirectoryMSI.
dbtable Nombre de la tabla de destino. Admite nombres calificados de esquema (por ejemplo, myschema.mytable).
batchsize Número de filas que se van a insertar por lote. Valor predeterminado: 1000.
numPartitions Número de particiones de Spark para operaciones de escritura en paralelo.
queryTimeout Tiempo máximo en segundos para esperar a que se complete una consulta. 0 deshabilita el tiempo de espera.
isolationLevel Nivel de aislamiento de transacción: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READo SERIALIZABLE. Valor predeterminado: READ_UNCOMMITTED.
truncate Si truees , trunca la tabla de destino en overwrite modo en lugar de quitarla y volver a crearla. Valor predeterminado: false.

MySQL

Se admiten las siguientes opciones al escribir en MySQL en proceso sin servidor.

Option Description
host Nombre de host del servidor MySQL.
port Número de puerto. Valor predeterminado: 3306.
database Nombre de la base de datos a la que se va a conectar.
connectionTimeout Tiempo máximo en segundos para esperar una conexión. 0 deshabilita el tiempo de espera.
requireSSL Si truees , requiere una conexión cifrada con SSL al servidor. Valor predeterminado: false.
useSSL Si truees , habilita SSL para la conexión cuando sea compatible con el servidor. Valor predeterminado: false.
user Nombre de usuario de la base de datos.
password Contraseña de base de datos.
dbtable Nombre de la tabla de destino. Admite nombres calificados de esquema (por ejemplo, myschema.mytable).
batchsize Número de filas que se van a insertar por lote. Valor predeterminado: 1000.
numPartitions Número de particiones de Spark para operaciones de escritura en paralelo.
queryTimeout Tiempo máximo en segundos para esperar a que se complete una consulta. 0 deshabilita el tiempo de espera.
isolationLevel Nivel de aislamiento de transacción: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READo SERIALIZABLE. Valor predeterminado: READ_UNCOMMITTED.
truncate Si truees , trunca la tabla de destino en overwrite modo en lugar de quitarla y volver a crearla. Valor predeterminado: false.
cascadeTruncate Si truees , aplica en cascada el truncamiento a las tablas con referencias de clave externa a la tabla de destino. Valor predeterminado: false.

Snowflake

En las secciones siguientes se enumeran las opciones admitidas para el conector Snowflake, organizado por función.

Conexión

Las siguientes opciones configuran la conexión con Snowflake y controlan el comportamiento de la sesión.

Option Description
host Nombre de host de la cuenta de Snowflake (por ejemplo, <account>.snowflakecomputing.com).
port Número de puerto. Valor predeterminado: 443.
sfaccount Identificador de cuenta de Snowflake.
sfauthenticator Método de autenticación: snowflake (contraseña), oauth (token) o snowflake_jwt (par de claves). Valor predeterminado: snowflake.
networktimeout Tiempo de espera en segundos para las operaciones de red.
sftimezone Zona horaria para las operaciones de marca de tiempo (por ejemplo, America/New_York).
client_session_keep_alive Si truees , envía señales keepalive para evitar el tiempo de espera de la sesión durante las operaciones de ejecución prolongada. Valor predeterminado: false.
ocspfailopen Si truees , permite que las conexiones continúen cuando la validación del certificado OCSP no esté disponible (modo de error abierto). Valor predeterminado: true.

Autenticación

Las siguientes opciones proporcionan credenciales para el método de autenticación configurado en sfauthenticator. Las credenciales de almacenamiento provisional (temporary_aws_*, awsaccesskey, temporary_azure_sas_token) son necesarias cuando Snowflake realiza la escritura de datos a través del almacenamiento en la nube.

Option Description
sfuser Nombre de usuario de Snowflake.
sfpassword Contraseña de Snowflake. Se usa cuando sfauthenticator es snowflake.
sfToken Token de acceso de OAuth. Se usa cuando sfauthenticator es oauth.
pem_private_key Clave privada en formato PEM para la autenticación de par de claves. Se usa cuando sfauthenticator es snowflake_jwt.
temporary_aws_access_key_id Identificador temporal de clave de acceso de AWS para el almacenamiento provisional de S3. Se prefiere a la hora awsaccesskey de usar credenciales de corta duración.
temporary_aws_secret_access_key Clave de acceso secreta temporal de AWS para el almacenamiento provisional de S3.
temporary_aws_session_token Token temporal de sesión de AWS para el almacenamiento provisional de S3.
temporary_azure_sas_token Token de SAS Azure temporal para el almacenamiento provisional de Azure Blob Storage.
awsaccesskey Clave de acceso de AWS para el almacenamiento provisional de S3.
awssecretkey Clave secreta de AWS para el almacenamiento provisional de S3.

Objetivo

Las siguientes opciones especifican la base de datos, el esquema, el almacenamiento y la tabla de Snowflake en las que escribir.

Option Description
sfdatabase Nombre de la base de datos de Snowflake.
sfschema Nombre del esquema de Snowflake.
sfwarehouse Almacenamiento virtual de Snowflake usado para la ejecución de consultas.
sfrole Rol snowflake para la sesión.
dbtable Nombre de la tabla de destino.

Comportamiento de escritura

Las siguientes opciones controlan cómo se escriben los datos en la tabla Snowflake de destino.

Option Description
column_mapping Cómo coinciden las columnas DataFrame con las columnas de la tabla Snowflake: name (por nombre de columna) o position (por orden de columna). Valor predeterminado: name.
column_mismatch_behavior Comportamiento cuando las columnas DataFrame y table no se alinean: error o ignore. Valor predeterminado: error.
truncate_table Si truees , trunca la tabla de destino antes de escribir. Valor predeterminado: false.
usestagingtable Si truees , almacena provisionalmente los datos en una tabla temporal antes de intercambiarlos en el destino, lo que permite escrituras atómicas. Valor predeterminado: true.
internal_execute_query_in_sync_mode Si truees , ejecuta consultas de Snowflake de forma sincrónica. Valor predeterminado: false.
autopushdown Si truees , inserta las operaciones de filtrado y agregación en Snowflake para su ejecución. Valor predeterminado: true.

Redshift

En las secciones siguientes se enumeran las opciones admitidas para el conector de Redshift, organizados por función.

Conexión

Las siguientes opciones configuran la conexión al clúster de Redshift.

Option Description
host Nombre de host del punto de conexión del clúster de Redshift.
port Número de puerto. Valor predeterminado: 5439.
database Nombre de la base de datos de Redshift.
connectionTimeout Tiempo máximo en segundos para esperar una conexión.

Autenticación

Las siguientes opciones configuran las credenciales para Redshift y para la ubicación de almacenamiento provisional de S3 que Redshift usa durante las operaciones de escritura.

Option Description
user Nombre de usuario de Redshift.
password Contraseña de Redshift.
aws_iam_role ARN del rol de IAM que Redshift usa para acceder a S3 para los datos de almacenamiento provisional.
temporary_aws_access_key_id Identificador temporal de clave de acceso de AWS para el almacenamiento provisional de S3. Se prefieren las credenciales de larga duración.
temporary_aws_secret_access_key Clave de acceso secreta temporal de AWS para el almacenamiento provisional de S3.
temporary_aws_session_token Token temporal de sesión de AWS para el almacenamiento provisional de S3.
forward_spark_s3_credentials Si truees , reenvía las credenciales de Spark S3 a Redshift para el almacenamiento provisional. Use solo cuando Spark y Redshift compartan las mismas credenciales de S3. Valor predeterminado: false.

Comportamiento de escritura

Las siguientes opciones controlan cómo se escriben los datos en la tabla redshift de destino, incluida la distribución, las claves de ordenación y el formato de almacenamiento provisional.

Option Description
dbtable Nombre de la tabla de destino. Admite nombres calificados de esquema (por ejemplo, myschema.mytable).
batchsize Número de filas por inserción por lote. Valor predeterminado: 1000.
numPartitions Número de particiones de Spark para operaciones de escritura en paralelo.
queryTimeout Tiempo máximo en segundos para esperar a que se complete una consulta.
isolationLevel Nivel de aislamiento de transacción: NONE, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READo SERIALIZABLE. Valor predeterminado: READ_UNCOMMITTED.
diststyle Estilo de distribución de Redshift: EVEN, KEYo ALL.
distkey Columna que se va a usar como clave de distribución. Obligatorio cuando diststyle es KEY.
sortkeyspec Ordene la especificación de clave para la tabla Redshift (por ejemplo, SORTKEY(col1, col2)).
csvnullstring Cadena escrita en archivos CSV de almacenamiento provisional para representar NULL valores. Valor predeterminado: cadena vacía.
tempformat Formato de archivo de almacenamiento provisional: CSV o AVRO. Valor predeterminado: CSV.
truncate Si truees , trunca la tabla de destino en overwrite modo en lugar de quitarla y volver a crearla. Valor predeterminado: false.

Escritura en PostgreSQL en proceso sin servidor

En este ejemplo se usa append el modo y se recuperan las credenciales de un ámbito de secreto de Databricks.

df.write \
  .format("postgresql") \
  .option("host", dbutils.secrets.get(scope="<scope>", key="<host>")) \
  .option("port", "<port>") \
  .option("database", "<database-name>") \
  .option("dbtable", "<table-name>") \
  .option("user", dbutils.secrets.get(scope="<scope>", key="<user>")) \
  .option("password", dbutils.secrets.get(scope="<scope>", key="<password>")) \
  .mode("append") \
  .save()

Pasos siguientes

  • Orígenes de datos de Spark: instrucciones de configuración, ejemplos de código y una comparación de las estrategias de integración de Spark.
  • Conexión JDBC: use una conexión de Catálogo de Unity con un controlador JDBC para las opciones no admitidas por conectores agrupados en sin servidor o para orígenes de datos sin un conector agrupado.
  • Referencia de opciones de api de Spark: referencia para DataFrameReader, DataFrameWriter y opciones de streaming para formatos de archivo y orígenes de streaming.