原创

关于Delta Lake的几个问题

什么是Delta Lake

Delta Lake是一个开源存储层(storage),他为传统的数据湖带来了可靠性。
Delta Lake提供了ACID事务、可扩展的元数据处理和统一了流式和批式数据处理。
Delta Lake可以直接运行在现有的数据湖上层,而且完全兼容Spark API

Delta Lake和Spark有什么关系?

Delta Lake位于Spark的上层,格式和计算层有助于简化构建大数据管道,并提高管道的总体效率。

Delta Lake使用什么格式存储数据?

Delta Lake在你的云存储中使用Parqute格式进行保存数据,除了版本之外,Delta Lake还存储一个事务日志,以跟踪对table或blob存储目录所做的所有提交,以提供ACID事务。

如何使用Delta Lake读取和写入数据?

可以使用Spark API进行读取和写入数据,因为他是完全兼容的哦。具体是实现可以参考Delta 快速入门

可以直接将数据流写入Delta Lake Table中和直接读取Table么?

是的,你可以使用Structure Streaming直接对table进行读取和写入操作。具体是实现可以参考Delta 快速入门

Delta Lake的读取和写入操作支持使用Spark Streaming API么?

no,仅支持使用Structure Streaming。

在使用Delta Lake时,是否还能轻松的移植到其他的Spark平台?

可以,使用DeltaLake时,使用的是开放的ApacheSark API,这样就可以轻松地将代码移植到其他Spark平台。要移植代码,请将delta格式替换为拼花格式。

Delta Lake是否支持多表事务?

Delta Lake不支持多表事务和外键。Delta Lake支持表级别的事务。

什么时候应该使用Delta Lake表的分区?

可以按列对delta lake表进行分区。最常用的分区列是日期。按照以下两条经验法则确定要分区的列:

  • 列的基数:列将具有的不同值的数目。如果列的基数非常高,则不要使用该列进行分区。例如,如果按列userid进行分区,并且可以有1百万个不同的用户id,那么这是一个坏的分区策略。

  • 每个分区中的数据量:如果希望分区中的数据至少为1 GB,则可以按列进行分区。

sev7e0
Write by sev7e0
end
本文目录