Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede especificar intercalaciones en campos de cadena y leer tablas Delta que usan intercalaciones en Databricks Runtime 16.4 LTS y versiones posteriores.
Al habilitar la intercalación para una tabla, se agrega la collations-preview característica de tabla de escritura. Consulte Compatibilidad y protocolos de características de Delta Lake.
Nota:
De forma predeterminada, Delta Lake establece la intercalación de los campos de cadena en UTF8_BINARY.
Creación de una tabla con intercalación en el nivel de columna
Puede crear una nueva tabla con intercalación en el nivel de columna mediante el siguiente comando:
CREATE TABLE $tableName (
nonCollatedColName STRING,
collatedColName STRING COLLATE UNICODE,
structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
mapColName MAP<STRING, STRING COLLATE UNICODE>,
arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta
Modificar una columna de tabla para definir la intercalación
Puede actualizar una columna existente para usar la intercalación mediante los siguientes comandos:
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType
Para quitar una intercalación no predeterminada (si existe):
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY
Para cambiar la ordenación de la columna a utf8_lcase:
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE
Cambiar la intercalación de una tabla no actualiza automáticamente las estadísticas ni la disposición de los datos para la información escrita previamente. Para mejorar el salto de archivos de los datos históricos en la nueva configuración de intercalación, Databricks recomienda lo siguiente:
Ejecute
ANALYZE table_name COMPUTE DELTA STATISTICSpara actualizar las estadísticas de omisión de archivos para los archivos de datos existentes.En el caso de las tablas con clústeres líquidos habilitados, ejecute
OPTIMIZE FULL table_namepara actualizar la agrupación en clústeres líquidos.Para las tablas que usan
ZORDER, haga lo siguiente:Deshabilite la optimización incremental en la sesión de Spark reemplazando la configuración predeterminada de Spark con el siguiente comando:
SET spark.databricks.optimize.incremental=falseEjecute
OPTIMIZE table_name ZORDER BY zorder_columnpara volver a escribir todos los archivos de datos existentes.
Azure Databricks siempre respetará la intercalación en los resultados de la consulta.
Deshabilitar la collación de una tabla
Debe deshabilitar explícitamente la intercalación para cada columna de cadena de una tabla antes de quitar la característica de intercalación.
Utilice la siguiente sintaxis para establecer la intercalación de una columna en UTF8_BINARY.
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY
Para quitar la característica de tabla, ejecute el siguiente comando:
ALTER TABLE table_name
DROP FEATURE collations-preview
Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.
Evolución y intercalación de esquemas
La intercalación interactúa con la evolución del esquema mediante las siguientes reglas:
- Si una columna de origen ya existe en la tabla de destino, la intercalación de la columna en la tabla de destino no se modifica.
- Si se especifica la intercalación de una columna de origen, la columna agregada a la tabla de destino utiliza la intercalación especificada.
- Si la tabla de destino no tiene habilitada la intercalación cuando se agrega una columna con intercalación, la
collations-previewcaracterística de tabla está habilitada.
Limitaciones
Existen las siguientes limitaciones para las tablas con la intercalación habilitada:
- Las tablas delta creadas externamente con una intercalación no reconocida por Databricks Runtime producen una excepción cuando se consulta.
- No hay soporte para Delta Sharing.
- Las columnas intercaladas no se pueden usar con
CHECKrestricciones. - Las columnas generadas no pueden usar la intercalación.
- Las columnas intercaladas no se pueden usar con columnas de índice de filtro de Bloom.
- No se admite la intercalación en las API de OSS Delta Lake para Scala o Python. Debe usar Spark SQL o las APIs de DataFrame para habilitar la ordenación.
- No se admite la sobrescritura de particiones dinámicas en columnas intercaladas.
- No se puede hacer referencia a las columnas intercaladas en consultas de estado de Structured Streaming.
- Lectores externos que no respetan la funcionalidad alternativa de
collations-previewen tablas recurren a la intercalación predeterminada deUTF8_BINARY. - Un
MAPno puede tener una clave que sea una cadena intercalada. - UniForm no funciona con intercalaciones.