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的并行度,也能决定输出的文件数。增加这个值虽然可以增加并行度,但也相应的增加了产生小文件数。
DeltaLake数据湖解决方案的更多相关文章
- Apache Hudi:云数据湖解决方案
1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...
- 构建企业级数据湖?Azure Data Lake Storage Gen2不容错过(上)
背景 相较传统的重量级OLAP数据仓库,“数据湖”以其数据体量大.综合成本低.支持非结构化数据.查询灵活多变等特点,受到越来越多企业的青睐,逐渐成为了现代数据平台的核心和架构范式. 数据湖的核心功能, ...
- 构建企业级数据湖?Azure Data Lake Storage Gen2实战体验(中)
引言 相较传统的重量级OLAP数据仓库,“数据湖”以其数据体量大.综合成本低.支持非结构化数据.查询灵活多变等特点,受到越来越多企业的青睐,逐渐成为了现代数据平台的核心和架构范式. 因此数据湖相关服务 ...
- 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...
- 通过Apache Hudi和Alluxio建设高性能数据湖
T3出行的杨华和张永旭描述了他们数据湖架构的发展.该架构使用了众多开源技术,包括Apache Hudi和Alluxio.在本文中,您将看到我们如何使用Hudi和Alluxio将数据摄取时间缩短一半.此 ...
- COS 数据湖最佳实践:基于 Serverless 架构的入湖方案
01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...
- 基于Apache Hudi构建数据湖的典型应用场景介绍
1. 传统数据湖存在的问题与挑战 传统数据湖解决方案中,常用Hive来构建T+1级别的数据仓库,通过HDFS存储实现海量数据的存储与水平扩容,通过Hive实现元数据的管理以及数据操作的SQL化.虽然能 ...
- 数据湖应用解析:Spark on Elasticsearch一致性问题
摘要:脏数据对数据计算的正确性带来了很严重的影响.因此,我们需要探索一种方法,能够实现Spark写入Elasticsearch数据的可靠性与正确性. 概述 Spark与Elasticsearch(es ...
- 印度最大在线食品杂货公司Grofers的数据湖建设之路
1. 起源 作为印度最大的在线杂货公司的数据工程师,我们面临的主要挑战之一是让数据在整个组织中的更易用.但当评估这一目标时,我们意识到数据管道频繁出现错误已经导致业务团队对数据失去信心,结果导致他们永 ...
随机推荐
- SpringBoot总结之Spring Data Jpa
一.Spring Data Jpa简介 JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate.TopLink等. Spring D ...
- 安装Go语言支持及Gogs版本管理工具
安装Go语言支持及Gogs版本管理工具 1. GO 语言: 1.1 介绍 1.1.1 官方介绍: The Go programming language is an open source proje ...
- div填满页面剩余空间的方法
想让div填满页面剩余空间,最简易的方式还是靠提前的布局. 这里提供两种方法: (1)利用 height 样式的%比例设置布局 <!DOCTYPE html> <html lang= ...
- nodejs 文本逐行读写功能的实现
利用nodejs实现:逐行读写(从一个文件逐行复制到另外一个文件):逐行读取.处理和写入(读取一行,处理后,写入另一个文件) 1.所需要的模块: fs,os,readline 2.具体实现: a. 功 ...
- 第二十九篇 -- UDP和TCP
最近在写WIFI模块,所以就想明确一些TCP和UDP的区别,发现以前的理解还是有点误区.现在重新学习. 相同点 UDP协议和TCP协议都是传输层协议 TCP(Transmission Control ...
- Gogs+Drone搭建CI/CD平台
Gogs 是由 Go 语言编写的 Git 服务器,由中国人主导开发的一款开源项目,搭建方便并且拥有完善的中文文档,配合 Drone 可以实现持续集成/持续部署.本文介绍如何通过 Docker 搭建 G ...
- elementUI的el-input和el-select宽度 一致
在用vue时,用到了element组件的 el-input 和 el-select(多选框)组件,但是宽度显示不一样,查看了多选框的css,发现element-style是写死的 添加style=&q ...
- 用 JavaScript 刷 LeetCode 的正确姿势【进阶】
之前写了篇文章 用JavaScript刷LeetCode的正确姿势,简单总结一些用 JavaScript 刷力扣的基本调试技巧.最近又刷了点题,总结了些数据结构和算法,希望能对各为 JSer 刷题提供 ...
- Maven-内部多个项目依赖自动升级版本的部署
需要自动升级版本的AAA项目发布 (有内部依赖时) 步骤比较复杂, 有一些需要根据实际情况调整. 考虑了以下几种可能性: 依赖模块的版本有更新 依赖模块版本没更新 依赖模块的版本号: 直接定义, 用属 ...
- React Hooks的理解
一.是什么 Hook 是 React 16.8 的新增特性.它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 至于为什么引入hook,官方给出的动机是解决长时间使 ...