DeltaLake

湖仓方案DeltaLake、Hudi、Iceberg功能对比 阅读详情

Delta Lake概述.md

数据湖

  • 数据湖概念的诞生,源自企业面临的一些挑战,如数据应该以何种方式处理和存储。
  • 数据湖不但能存储传统类型数据,也能存储任意其他类型数据,并且能在它们之上做进一步的处理与分析,产生最终输出供各类程序消费。
  • 定义
    • 数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。
  • Martin Fowler datelake : https://martinfowler.com/bliki/DataLake.html
    • 特点
      • The data lake stores raw data, in whatever form the data source provides(数据湖存储的是原始数据,不用管原始数据的格式)
      • There is no assumptions about the schema of the data, each data source can use whatever schema it likes(没有数据schema的假设,每个数据源可以使用任何schema)
      • It's up to the consumers of that data to make sense of that data for their own purposes(取决于数据消费者对于数据的用途)
    • 数据湖 vs 数据仓库
      • 输入数据处理:
        • 数据仓库--清洗数据,定义数据schema,存入数据仓库
        • 数据湖 --按原始格式存入
      • 数据分析处理:
        • 数据仓库 --直接按之前定义的schema读取分析,所有用户一致
        • 数据湖 -- 按用户各自需求选择和组织数据
      • 总结:
        • 数据仓库倾向于采用单一模式的概念来满足所有分析需求
        • 数据仓库另一个问题来源是确保数据质量
          • 数据质量问题是一个主观意愿,不同分析需求对于数据需求不一样(按日组织,按月组织)
  • 生命周期
  • 特点:
    • ACID事务支持,流处理,schema 增强, 多版本追踪,数据快照

delta架构 = structed streaming + delta lake

  • 当数据写入的同时可以读取一致的数据
  • 增量读取一个大表时可以高吞吐量
  • 当写入出错时可以回滚
  • 可以处理历史版本的数据
  • 可以处理延迟到达的数据

概念

  • Delta Lake是一个可靠存储层
  • 为Apache Spark和其他大数据引擎提供可伸缩的ACID事务,让用户可以基于HDFS和云存储构建可靠的数据湖为Apache Spark和其他大数据引擎提供可伸缩的ACID事务,让用户可以基于HDFS和云存储构建可靠的数据湖
  • Delta Lake还提供了内置的数据版本控制,可以方便地回滚以及重新生成报告。
  • https://blog.youkuaiyun.com/oscarun/article/details/89530621
  • 使用versioned Parquet files文件格式来存储数据到云存储,记录所有事务日志,提供ACID支持
  • Delta Lake does not support multi-table transactions and foreign keys. Delta Lake supports transactions at the table level.
  • 通常使用Date字段作为分区
    • 使用基数少的字段但作为分区,userid不适合
    • 至少一个分区1个g以上数据量
  • Delta Lake 就是使用 DataSource V1 版本的 API 实现的一种新的数据源

官网 --0.3

  • https://docs.delta.io/0.3.0/delta-update.html
  • Delta Lake保证向后兼容,新版本都支持旧版本的表读取,旧的版本不能读取新的版本
  • Delta Lake 事务处理
    • Delta Lake的工作原理是将事务日志与数据文件一起存储在表中
    • 在table目录下,有一个_delta_log目录,存储着一系列原子操作集合的日志,称为delta文件,json格式
      • /table/_delta_log/00000000000000000000.json
    • 为了避免每次加载table时候读取整个事务日志文件,会周期性的创建checkpoint,包含table当前版本所有状态信息
  • Delta Lake底层存储系统
  • Table Deletes, Updates, and Merges
    • 删除操作只是把数据从当前版本中移除,并没有从物理存储系统中移除,旧的版本还是可以查到数据,直到旧版本被清除后
  • Delta Lake tables支持两种工具命令
    • Vacuum -- 清除不再使用的数据,物理删除
    • History -- 获取数据历操作记录,版本历史
Data Bricks Delta Lake 入门 Delta Lake 是一个开源存储层,它将关系数据库语义添加到基于 Spark 的数据湖处理中。适用于 PySpark、Scala 和 .NET 代码的 Azure Synapse Analytics Spark , Azure DataBricks 都支持 Delta Lake。在大数据这个领域,对象存储的最影响效率的问题就是针对对象存储数据的更新,传统的对象存储如AWS 的S3 , Azure的 Blob等如果要更新要给对象数据的时候,必须要先将对象查找到并删除,然后再追加。这通常会导致性能效率低下。 阅读详情

相关推荐

SpotBugs使用

spotbugs命令行参数解析

javajingling的专栏 2947

Delta Lake - 数据湖的开放标准

最近在 Spark + AI Summit 峰会上,Databricks 和 Linux 基金会共同宣布 Delta Lake 现在由 Linux 基金会托管,将成为数据...

DataFlow范式 2086

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 943

Delta Lake 的演进历史及现状

作者王晓龙(筱龙),阿里云开源大数据平台技术专家1Delta Lake 介绍 大数据平台架构发展至今,已经经历了三个阶段的技术演进:从最早的数仓,到数据湖+数仓的架构,再到最近两年的 ...

weixin_45906054的博客 2807

神州数码OSPF实战配置详解(手把手教学)

本文提供神州数码设备上OSPF基础配置的详细实战教程。通过搭建典型的两台三层交换机互联实验环境,手把手演示了VLAN创建、接口IP配置、OSPF进程启动、Router-ID设置及网络宣告等核心步骤,并分享了邻居状态验证、路由检查及常见排错方法,帮助网络工程师快速掌握神州数码OSPF的配置要点与操作技巧。

weixin_29210727的博客 79

如何实现MCGS与S7-200SMART PLC以太网多台通信控制?

第九步:(设备工具箱—设备管理—鼠标依次点击通用TCP/IP父设备—西门子_ Smart200到设备窗口里面去)数据类型:第0位(指PLC地址变量小数点后面的位数,例如我地址是M0.0,那么在数据类型应填写通道的第00位)第十步:(鼠标双击打开通用TCPIP父设备0--[通用TCP/IP父设备]进入通信配置)通道地址:0(指小数点前面起始字节的地址,例如我地址是M0.0,那么应在通道地填写0)。第七步:(选择通用TCP/IP父设备,点击新增,右侧选定设备就会自动添加进去。

u010670857的博客 6718

deltalake官网

原文 https://docs.databricks.com/delta/index.html

github_28583061的博客 466

RH850系列芯片深度剖析 1.5-链接(ld)文件解析

基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);

本博客专注于嵌入式软件领域技术分享。 1427

数据湖09:开源框架DeltaLake、Hudi、Iceberg深度对比

目前市面上流行的三大开源数据湖方案分别为:DeltaLake、Apache Iceberg和Apache Hudi。

渡江客涂鸦板 1万+

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1457

15、电科院FTU检测标准学习笔记-基本性能

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1865

DeltaLake介绍

概述 DeltaLake是DataBricks的一个开源项目,它是带ACID的开源存储层,可为数据湖(data lake)带来可靠性。它和Spark的API完全兼容。 总体架构图 DeltaLake的关键特点和优势 ACID事务(ACID Transactions) Data lakes(数据湖)通常具有多个数据管道并发读取和写入数据,并且由于缺少事务,数据工程师必须经过繁琐的过程才能确保数据完...

zg_hover的专栏 3419

军品研制过程-转阶段

介绍军品转阶段评审

Abel的博客 2万+

作业帮基于 DeltaLake 的数据湖建设实践

作业帮是一家以科技为载体的在线教育公司,其大数据中台作为基础系统中台,主要负责建设公司级数仓,向各个产品线提供面向业务主题的数据信息。本文主要分享了作业帮基于 DeltaLake 的数据湖建设最佳实践。

数据库技术 1696

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

5.数据湖deltalake流表的读写

delta lake和 spark structured streaming可以深度整合。delta lake克服了很多常见的与流系统和文件整合带来的相关限制,如下:保证了多个流(或并发...

大数据星球-浪尖 934

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

DeltaLake 概念

Delta Lake 概念 Delta Lake 是一个开源的存储层。 (类似的存储层还有Hadoop HDFS,Azure Data Lake Storage,Amazon S3等。) 它可以为你的Data Lake带来可靠性。 Delta Lake提供ACID事务,可伸缩的元数据处理,并统一流和批数据处理。 Delta Lake在你现有的Data Lake之上运行,并且与Apache Spar...

大数据流浪法师的学习笔记与分享 1016

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

1.数据湖deltalake初识

1.delta特性简介Delta Lake是Spark计算框架和存储系统之间带有Schema信息数据的存储中间层。它给Spark带来了三个最主要的功能:第一,Delta Lake使得Sp...

大数据星球-浪尖 1375

2.数据湖DeltaLake之DDL操作

前面讲了delta lake简介,特性及基本操作。本文主要是讲DeltaLake的DDL操作,实际上是依赖于spark datasourcev2 和catalog API(3.0+)的,...

大数据星球-浪尖 1148

DeltaLake在工业大脑的实践分享

作者介绍占怀旻,花名心渡,阿里云数字产业产研部-工业大脑团队的大数据工程师,目前的工作方向是利用大数据与AI技术,为工业企业客户构建数据中台,支撑工业企业的数字化转型和智能制造落地,用大数...

http://www.54tianzhisheng.cn/ 271

数据湖架构--DeltaLake

DeltaLake是一个开源的存储层,它为大数据的读写带来了ACID的能力,通过快照隔离机制为HDFS提供了读写一致性的保证,同时DeltaLake提供内部版本的跟踪更能,使得用户可以轻松进行快照、版本回滚。 数据湖是近些年提出的新的数据架构,将大量的数据存储到数据湖中,数据湖可以认为是一个可以无限扩展的存储和计算架构。然而在数据湖实践落地的过程中也存在以下问题 数据质量问题,数据进入数据湖由于没有任何数据格式校验过程,所以经常出现数据值缺失或者数据错误的情况 数据稳定性问题,与传统关系性数据库相比,大数

hawk2014bj的博客 872

大数据009待续数据胡Deltalake源码解读待续

大数据009待续数据胡Deltalake源码解读待续

weixin_40426261的博客 738
上一篇: dubbo
下一篇: Kafka官网
github_28583061
博客等级 码龄11年 7粉丝 180原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值