zoukankan      html  css  js  c++  java
  • DeltaLake数据湖解决方案

    Delta Lake 是DataBricks公司推出的一种数据湖解决方案,Delta为该方案的核心组件。围绕数据流走向(数据入湖从流入数据湖、数据组织管理、数据查询到流出数据湖)推出了一系列功能特性,

    协助您搭配第三方上下游工具,搭建快捷、易用、和安全的数据湖。

    通常的数据湖方案是选取大数据存储引擎构建数据湖(例如阿里云OSS等对象产品或云下hdfs),然后将产生的各种类型数据存储在该存储引擎中。在使用数据时,通过Spark或Presto

    对接数据分析引擎并进行数据解析。

    应用场景:优点

    Delta适用于云上数据湖数据管理解决方案,以下场景可以使用Delta:

    1、实时查询:数据实时从上游流入Delta,查询侧即可查询该数据。同时,由于支持ACID功能,保证了数据流入和查询的隔离性,不会产生脏数据。

    2、删除或更新,通常数据湖方案不支持数据的删除或更新。如果需要删除或更新数据,则需要把原始数据清理掉,然后把更新后的数据写入存储。而Delta支持数据的删除或更新。

    3、数据实时同步,CDC(change data capture):使用Delta merge功能,启动流作业,实时将上游的数据通过merge更新到Delta Lake中。

    4、数据质量控制:借助于Delta Schema校验功能,在数据导入时剔除异常数据,或者对异常数据做进一步处理。

    5、数据演化:数据的schema并非固定不变,Delta 支持通过API方式改变数据的Schema。

    6、实时机器学习

    delta lake目前的不足:

    1、更新操作很重,更新一条数据和更新一批数据的成本可能是一样的,所以不适合一条条的更新数据

    2、更新数据的方式是新增文件,会造成文件数量过多,需要清理历史版本的数据,version最好不要保存太多、

    3、乐观锁在多用户同时更新时并发能力较差,更适合写少读多的场景

    数据湖delta lake的最佳调优详解

    https://my.oschina.net/u/4590259/blog/4474138

    1、选择最佳恰当的分区列

    对于delta表建议指定分区列。企业中最常见的分区列就是date,地域这些。

    2、合并文件

    如果是不断将数据写入Delta表,随着时间的推移,会产生大量文件,尤其是如果小数据量的添加数据时。这个可能会大大降低表的查询速率,也可能影响文件系统的性能。

    理想情况下,应定期将大量的小文件重写为少量较大的文件。

    3、merge操作的性能调优

    a、减少匹配查找的数据量

    默认情况下,merge操作会扫描整个delta lake表找到满足条件的数据。可以加些谓词,以减少数据量。

    b、合并文件

    如果数据存储的时候有很多小文件,就会降低数据的读取速度。可以合并小文件成一些大文件,来提升读取的速度。后面会说到这个问题。

     c、控制shuffle的分区数

    为了计算和更新数据,merge操作会对数据进行多次shuffle。shuffle过程中task数量是由参数spark.sql.shuffle.partitions来设置,默认是200。该参数不仅能控制shuffle的并行度,也能决定输出的文件数。增加这个值虽然可以增加并行度,但也相应的增加了产生小文件数。

  • 相关阅读:
    Java基础知识&面试题
    用例设计之API用例覆盖准则
    用例设计之APP用例覆盖准则
    Java的8种基本数据类型和3种引用数据类型
    并发concurrent---1
    Java运行时环境---ClassLoader类加载机制
    Java运行时环境---内存划分
    Java高阶语法---Volatile
    Java高阶语法---transient
    Java高阶语法---final
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/14874787.html
Copyright © 2011-2022 走看看