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.
Azure Databricks ofrece varios métodos para ingerir datos en almacenes de lago de datos con el respaldo por Delta Lake. En este artículo se enumeran las herramientas de ingesta admitidas y las instrucciones sobre qué método usar en función de criterios como el origen de datos y la latencia.
Métodos de ingesta
Puede ingerir datos en Databricks mediante los métodos siguientes:
- Ingesta por lotes de un conjunto de filas de datos para su procesamiento poco frecuente
- Ingestión de datos en streaming de filas de datos individuales o conjuntos de filas de datos a medida que llegan para su procesamiento en tiempo real
Los datos ingeridos se cargan en tablas Delta que luego se pueden usar en tus casos de uso de datos posteriores e inteligencia artificial. Debido a la arquitectura Lakehouse de Databricks, no es necesario duplicar los datos en los casos de uso y puede utilizar Unity Catalog para el control de acceso centralizado, la auditoría, el linaje y la exploración de datos en todos sus datos.
Ingesta por lotes
Con la ingesta por lotes, los datos se cargan como conjuntos (o lotes) de filas en Databricks a menudo según una programación (por ejemplo, cada día) o se desencadenan manualmente. Representa la parte de "extracción" de los casos de uso tradicionales de extracción, transformación y carga (ETL). Puede usar la ingesta por lotes para cargar datos desde:
- Archivos locales como CSV
- Almacenamiento de objetos en la nube, incluido Amazon S3, Azure Data Lake Storage y Google Cloud Storage
- Aplicaciones SaaS como Salesforce y bases de datos como SQL Server
La ingesta por lotes admite una amplia gama de formatos de origen de archivo, incluidos CSV, TSV, JSON, XML, Avro, ORC, Parquet y archivos de texto.
Databricks admite las opciones tradicionales de ingesta por lotes e ingesta incremental de lotes. Mientras que la ingesta por lotes tradicional procesa todos los registros cada vez que se ejecuta, la ingesta incremental por lotes detecta automáticamente nuevos registros en el origen de datos y omite los registros que ya se han ingerido. Esto significa que es necesario que se procesen menos datos y, como resultado, los trabajos de ingesta se ejecutan más rápido y usan recursos de cómputo de manera más eficiente.
Ingesta tradicional de lotes (de una sola vez)
Puede cargar archivos de datos locales o descargar archivos desde una dirección URL pública mediante la interfaz de usuario de agregar datos. Consulte Carga de archivos.
Ingesta por lotes incremental
En esta sección se describen las herramientas de ingesta por lotes incrementales admitidas.
Tablas de streaming
El CREATE STREAMING TABLE
comando SQL permite cargar datos de forma incremental en tablas de streaming desde el almacenamiento de objetos en la nube. Consulte CREATE STREAMING TABLE.
Ejemplo: Ingesta incremental por lotes mediante tablas de streaming
CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM STREAM read_files(
"/databricks-datasets/retail-org/customers/",
format => "csv"
)
Conector de almacenamiento de objetos en la nube
Auto Loader, el conector de almacenamiento de objetos en la nube integrado, le permite procesar de forma incremental y eficaz nuevos archivos de datos a medida que llegan a Amazon S3 (S3), Azure Data Lake Storage Gen 2 (ALDS2) o Google Cloud Storage (GCS). Consulte Cargador automático.
Ejemplo: Ingesta incremental por lotes mediante Auto Loader
df = spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("rescuedDataColumn", "_rescued_data")
.schema("/databricks-datasets/retail-org/customers/schema")
.load("/databricks-datasets/retail-org/customers/")
Conectores totalmente administrados
Lakeflow Connect proporciona conectores totalmente administrados para ingerir desde bases de datos y aplicaciones SaaS. Los conectores administrados están disponibles a través de las siguientes opciones:
- Interfaz de usuario de Databricks
- CLI de Databricks
- API de Databricks
- SDK de Databricks
- Conjuntos de recursos de Databricks
Consulte Conectores administrados en Lakeflow Connect.
Ingesta en streaming
Con la transmisión continua, se cargan de forma constante filas de datos o lotes de filas de datos conforme se generan, permitiendo su consulta casi en tiempo real a medida que llegan. Puede usar la ingesta de streaming para cargar datos de streaming desde orígenes como Apache Kafka, Amazon Kinesis, Google Pub/Sub y Apache Pulsar.
Databricks también admite la ingesta de streaming mediante conectores integrados. Estos conectores permiten procesar datos nuevos de forma incremental y eficaz a medida que llegan desde orígenes de streaming. Consulte Configuración de orígenes de datos de streaming.
Ejemplo: Ingesta de streaming desde Kafka
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
Ingesta por lotes y streaming con canalizaciones declarativas de Lakeflow
Databricks recomienda usar canalizaciones declarativas de Lakeflow para crear canalizaciones de procesamiento de datos confiables y escalables. Lakeflow Declarative Pipelines admite la ingesta por lotes y streaming, y puede ingerir datos de cualquier origen de datos compatible con Auto Loader.
Ejemplo: Ingesta incremental por lotes mediante canalizaciones declarativas de Lakeflow
@dlt.table
def customers():
return (
spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.load("/databricks-datasets/retail-org/customers/")
)
Ejemplo: Ingesta de streaming desde Kafka mediante canalizaciones declarativas de Lakeflow
@dlt.table
def kafka_raw():
return (
spark.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "<server:ip>")
.option("subscribe", "topic1")
.option("startingOffsets", "latest")
.load()
)
Programaciones de ingesta
Se puede ingerir datos como una operación única, con una programación periódica o de manera continua.
- Para casos de uso de streaming casi en tiempo real, use el modo continuo.
- Para casos de uso de ingesta por lotes, ingiera una vez o establezca una programación periódica.
Consulte Desencadenado frente al modo de canalización continua.
Asociados de ingesta
Muchas herramientas de terceros admiten la ingesta por lotes o streaming en Databricks. Databricks valida varias integraciones de terceros, aunque los pasos para configurar el acceso a los sistemas de origen e ingerir datos varían según la herramienta. En Asociados de ingesta encontrará una lista de herramientas validadas. Algunos asociados tecnológicos también se incluyen en Databricks Partner Connect, que proporciona una interfaz de usuario que simplifica la conexión de herramientas de terceros a los datos de LakeHouse.
Ingesta de bricolaje
Databricks proporciona una plataforma informática general. Como resultado, puede crear sus propios conectores de ingesta mediante cualquier lenguaje de programación compatible con Databricks, como Python o Java. También puede importar y aprovechar bibliotecas populares de conectores de código abierto, como la herramienta de carga de datos, Airbyte y Debezium.
Alternativas de ingesta
Databricks recomienda la ingesta para la mayoría de los casos de uso, ya que se escala para dar cabida a grandes volúmenes de datos, consultas de baja latencia y límites de API de terceros. La ingesta copia los datos de los sistemas de origen en Azure Databricks, lo que da como resultado datos duplicados que podrían quedar obsoletos a lo largo del tiempo. Si no desea copiar datos, puede usar las siguientes herramientas:
- Lakehouse Federation permite consultar orígenes de datos externos sin mover los datos.
- Delta Sharing permite compartir datos de forma segura entre plataformas, nubes y regiones.
Sin embargo, si no desea copiar datos, use Lakehouse Federation o Delta Sharing.
Cuándo usar delta sharing
Elija Delta Sharing para los escenarios siguientes:
- Limitación de la duplicación de datos
- Consulta de los datos más recientes posibles
Cuándo usar Federation Lakehouse
Elija la Federación de Lakehouse para los escenarios siguientes:
- Creación de informes ad hoc o trabajo de prueba de concepto en canalizaciones de ETL
Consideraciones al elegir un método de ingesta
Consideración | Orientación |
---|---|
Origen de datos | Si existen conectores nativos de Lakeflow Connect para el origen de datos, esta será la manera más sencilla de ingerir datos. En el caso de los orígenes de datos no admitidos por Lakeflow Connect, extraiga los datos del origen y, a continuación, use Auto Loader para ingerir los datos en Databricks. Para los archivos locales, use la interfaz de usuario de Databricks para cargar los datos. |
Latencia | Si desea analizar datos casi en tiempo real, use streaming para aprovechar el procesamiento incremental. Con el streaming, los datos están disponibles para realizar consultas tan pronto como llegue cada registro. De lo contrario, use la ingesta por lotes. |
Movimiento de datos | Si no puede copiar datos de los sistemas de origen a Databricks, utilice Lakehouse Federation o Delta Sharing (facilidades para compartir datos). |
Migración de datos a Delta Lake
Para obtener información sobre cómo migrar datos existentes a Delta Lake, consulte Migración de datos a Delta Lake.
COPY INTO (heredado)
El CREATE STREAMING TABLE
comando SQL es la alternativa recomendada al comando SQL heredado COPY INTO
para la ingesta incremental desde el almacenamiento de objetos en la nube. Consulte COPY INTO. Para una experiencia de ingesta de archivos más escalable y sólida, Databricks recomienda que los usuarios de SQL aprovechen las tablas de streaming en lugar de COPY INTO
.