数据导入概览
将数据加载到 Lakehouse 的方法有多种,具体取决于数据源、数据格式、加载方法以及批量、流式传输或数据传输等。Lakehouse 提供了多种方式的导入,按导入方式划分包括:支持用户SDK导入、支持使用SQL命令导入、支持使用客户端上传数据、支持第三方开源工具、支持Lakehouse Studio可视化界面导入。
导入方式概览
按场景划分
数据源 | 具体案例 | 适用场景 |
---|---|---|
本地文件快速上传 | 使用put命令上传到内部Volume,再使用COPY命令导入 | 适用于源文件上传,并且需要使用SQL进行转换。推荐在上传过程中使用SQL来转换或处理异常数据。 |
使用Lakehouse Studio的可视化上传界面 | 1. 适用于需要上传小数据量文件的用户,尤其是当文件存储在本地时。2. 用户界面友好,简化上传流程。3.支持多种文件格式,包括CSV、PARQUET、AVRO,满足不同数据格式需求。 | |
使用Jdbc客户端 在 JDBC 2.0.0 之后的版本中,本地 COPY 命令已被弃用。我们建议您使用 PUT 方法将数据上传到 volume 中,然后使用服务器端的 COPY 命令进行导入。 | 1.小数据量在没有可视化界面,适合技术用户,尤其是那些熟悉命令行操作且需要批量处理小数据量的用户。2.快速处理CSV文件,适合脚本化和自动化操作。 | |
批量从对象存储导入数据 | 使用Volume批量从对象存储加载数据 | 1.适用于存储在对象存储上的数据,需要利用SQL性能优势快速读取大量数据。2.高效处理大规模数据集。3.支持直接SQL数据转换,简化数据导入流程。4.支持多种文件格式,包括CSV、PARQUET、ORC |
使用Copy命令导入 | 1.具备Volume的优势,区别在于,Copy命令提供更多容错参数和数据导出支持。同时也支持导出到对象存储数据 | |
使用JavaSDK读取Kafka实时写入到Lakehouse中 | 使用Java SDK导入数据 | 1.适合需要实时数据流处理的业务场景,尤其是熟悉Java的开发人员。2.实时数据读取和写入,确保数据的即时可用性。3.适合自定义数据导入,提供高度灵活性。 |
自定义SDK读取文件写入到Lakhosue中 | 使用Java SDK导入数据 | 1.适合一次性大量数据导入,且数据频率不高(时间间隔大于五分钟)。2.支持自定义数据源,提供数据导入的灵活性。 |
使用Python SDK导入数据 | 1.适合熟悉Python的开发人员,需要自定义数据导入,尤其是数据不在对象存储或集成不支持的数据源。 | |
需要全托管服务和可视化操作的用户,尤其是同步第三方数据源 | 使用Lakehouse Studio数据集成 | 1.支持丰富的数据源和多种导入方式。2.提供实时同步、CDC镜像同步和离线周期调度同步。3.可视化监控,提高数据管理的透明度。 |
按导入方式
导入方式名称 | 使用方式 | 使用注意事项 |
---|---|---|
COPY 命令 | COPY INTO 命令 | 1.目前支持的对象存储位置为腾讯云COS和阿里云OSS2. 不支持跨云厂商导入(之后会支持)。比如您的Lakehouse开服在阿里云而对象存储是腾讯云 |
Volume | 使用ISNERT INTO... SELECT FORM VOLUEM导入 | 1.目前支持的对象存储位置为腾讯云COS和阿里云OSS2.不支持跨云厂商导入(之后会支持)。比如您的Lakehouse开服在阿里云而对象存储是腾讯云 |
数据集成 | 使用数据集成导入 | 1.支持丰富的数据源,性能会比COPY命令和Volume略差 |
SDK实时数据流(RealtimeStream) | 实时上传数据 | 1.实时写入的数据可以秒级查询。2.进行表结构更改时,需要先停止实时写入任务,然后在表结构变更后一段时间(大约90分钟)后,重新启动任务。2.table stream、materialized view 和 dynamic table 只能显示已经提交的数据。实时任务写入的数据需要等待 1 分钟才能确认,因此 table stream 也需要等待 1 分钟才能看到。 |
SDK批量上传(BulkloadStream) | 批量上传数据Java SDK、批量上传数据Python SDK | |
使用开源工具导入数据 | AIRBYTE、DATAX FLINK CONNECTOR |
导入说明
Lakehouse从原理上提供了两种主要的数据写入方法,以适应不同的数据处理需求和性能考量。
SQL引擎直接拉取
Lakehouse的SQL引擎能够直接从对象存储中拉取数据,这一方法特别适合于数据源已经位于对象存储的场景。未来,Lakehouse计划扩展支持更多类型的数据源,以进一步提升数据接入的灵活性。
- 优势:SQL引擎直接拉取数据,利用其性能优势,可以高效地处理存储在对象存储中的数据。使用COPY命令、Volume支持在导入过程中数据转化
- 计算资源:执行SQL查询时会消耗计算资源(VirtualCluster),但这种消耗是值得的,因为它提供了强大的数据处理能力。
- 文件格式:目前支持的文件格式包括CSV、PARQUET和ORC,这些格式都是数据分析和处理中常用的格式。
- 导入方式:支持多种数据导入方式,如COPY命令、Volume、数据集成离线导入以及SDK批量上传(BulkloadStream)。
向Ingestion Service推送数据
Lakehouse的Ingestion Service为需要实时数据写入的场景提供了解决方案。客户端将数据推送到服务端,由Ingestion Service接收并提交到表中,包括SDK实时数据流(RealtimeStream)和CDC实时写入。
- 优势:这种方法的优势在于提高了数据写入的实效性,实现了实时写入和实时可读。
- 资源消耗:目前Ingestion Service处于预览版本,使用该服务暂时不会计费。但请注意,未来会开始收费。
- 适用场景:适用于需要实时数据流处理的业务场景,如实时分析和即时数据更新。
批量加载建议
批量摄取涉及加载不需要实时处理的大型有界数据集。它们通常以特定的规则频率被摄取,并且所有数据并不是立即到达。对于批量加载,建议使用对象存储来存储传入数据。Lakehouse支持多种文件格式,支持CSV、PARQUET 、ORC文件格式。
联系我们