首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MLSQL 内置Delta数据湖以及Compaction功能介绍

MLSQL 内置Delta数据湖以及Compaction功能介绍

作者头像
用户2936994
发布于 2019-06-13 10:58:31
发布于 2019-06-13 10:58:31
75300
代码可运行
举报
文章被收录于专栏:祝威廉祝威廉
运行总次数:0
代码可运行

前言

之前写过一篇文章 Delta的真正用处和价值,你可知道,该项目开源的那天我就集到MLSQL了。不过当时只是尝鲜性质,主要原因是因为我一直觉得delta缺了Compaction功能。很多公司其实都有小文件的困扰,而Delta这个问题会更严重。不过近期Delta团队应该就会发布新版本了,届时有可能相关的功能都会补上。不过MLSQL现在也自己实现了一个Compaction的功能,并且对delta做了一定的集成和增强。

写入delta数据

下面的例子都会使用这个数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set data='''
{"key":"a","value":"no","topic":"test","partition":0,"offset":0,"timestamp":"2008-01-24 18:01:01.001","timestampType":0}
{"key":"a","value":"no","topic":"test","partition":0,"offset":1,"timestamp":"2008-01-24 18:01:01.002","timestampType":0}
{"key":"b","value":"no","topic":"test","partition":0,"offset":2,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"b","value":"no","topic":"test","partition":0,"offset":3,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"b","value":"no","topic":"test","partition":0,"offset":4,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"b","value":"no","topic":"test","partition":0,"offset":5,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
''';

流写入样例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- the stream name, should be uniq.
set streamName="streamExample";

-- load data as table
load jsonStr.`data` as datasource;

-- convert table as stream source
load mockStream.`datasource` options 
stepSizeRange="0-3"
as newkafkatable1;


select *  from newkafkatable1 
as table21;

-- output the the result to console.
save append table21  
as rate.`/tmp/delta/rate-1-table`
options mode="Append"
and duration="10"
and checkpointLocation="/tmp/rate-1" partitionBy key;

这里注意一下是流里面delta叫rate。

批写入示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load jsonStr.`data` as datasource;

save append datasource  
as delta.`/tmp/delta/rate-2-table`
partitionBy key;

Delta 工具集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!delta history /tmp/delta/rate-2-table;

image.png

Compaction前置条件

Compaction 实现参看这里Github。只有一个文件,用户兼容0.1.0版本,用户可以直接拷贝的自己项目里。

使用Compaction的前提有如下几个:

  1. delta表至少发生了一次checkpoint.默认是有十次提交就会产生一个新的checkpoint.
  2. 批/流都需要为append 模式往表里写数据

Compaction使用范例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!delta compact /tmp/delta/rate-2-table 8 1;

也可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!delta help; 

查看这些命令怎么使用。

前面表示对第八个版本之前的所有数据都进行合并,每个目录(分区)都合并成一个文件。

我们看下合并前每个分区下面文件情况:

image.png

合并后文件情况:

image.png

一个Compaction也是一次提交:

image.png

我们删除了16个文件,生成了两个新文件。另外在compaction的时候,并不影响读和写。所以是非常有用的。

总结

Delta解决了几个痛点问题:

  1. 数据版本问题
  2. 并发读写问题(多个进程或者单个进程多线程)
  3. 流批共享表

这几个问题对于数仓是经常会遇到的。

而对于机器学习而言,譬如在MLSQL里,用户是可以将自己的训练参数保存成版本的,但是他们使用的数据目前只能存多份(实际使用时用户需要手动修改存储目录,每次训练的时候)。而使用了delta之后,意味着机器学习的完整实验版本都可以被追踪,什么样的数据通过什么算法,以及配合什么参数得到了什么样的结果,都可以得到保留。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.06.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MLSQL Stack 让流调试更加简单
有一位同学正在调研MLSQL Stack对流的支持。然后说了流调试其实挺困难的。经过实践,希望实现如下三点:
用户2936994
2019/06/05
4300
MLSQL Stack 让流调试更加简单
如何用MLSQL快速调试Structured Streaming程序
早上对Structured Streaming 的window函数, Output Mode 以及Watermark有些疑惑的地方。Structured Streaming 的文档偏少,而且网上的文章同质化太严重,基础的不能再基础了,但是我也不想再开个测试的工程项目,所以直接就给予MLSQL来调试。
用户2936994
2018/09/29
4370
如何用MLSQL快速调试Structured Streaming程序
MLSQL数据源开发指南
那么我们如何实现自己的数据源呢?下面我们会分两部分,第一部分是已经有第三方实现了的标准Spark数据源的集成,第二个是你自己创造的新的数据源。
用户2936994
2019/03/22
4810
Delta的真正用处和价值,你可知道
应该说,Delta是最近几年Databricks开源的最有价值的东西。Databricks这几年对外致力于AI,对内则努力给客户提供一站式分析处理平台。这个一站式的核心是,内核包含了流和批的真正统一,那什么才是真正的流和批的统一呢?
用户2936994
2019/05/14
9010
为 Delta 新增 Upsert(Merge)功能
今天花了一早上以及午休时间,终于把delta的Upsert功能做完了。加上上周周四做的Delta Compaction支持,我想要的功能基本就都有了。
用户2936994
2019/06/11
9950
MLSQL拥抱BigDL,轻轻松松无编码玩深度学习
原谅我,前半句是真的,后半句是噱头,但是真的很简化了。 MLSQL已经有一个相对来比较完善的Python Runtime,细节可以参看这篇文章,所以玩深度学习是很容易的,不过需要你提供一段tensorflow代码或者项目。
用户2936994
2018/10/15
4810
Your Guide to Python with MLSQL Stack (二)
In the previous post Your Guide to NLP with MLSQL Stack (一), we already have known how to build a RandomForest model to classify text content. The TF/IDF, RandomForest are all built-in algorithms and implemented by Java. In this post, we will show you how to use Python to do the same job.
用户2936994
2019/05/14
5710
Your Guide to Python with MLSQL Stack (二)
新一代AI平台-MLSQL ,加入开源社区吧!
MLSQL社区希望人人都能够参与进来。开源应该是普惠的,这种普惠应该是在价值的发挥上,以及社区的参与上。我们认为积极的社区参与体现在如下点:
木东居士
2020/04/26
1K0
新一代AI平台-MLSQL ,加入开源社区吧!
如何实现语法的自解释(MLSQL易用性设计有感)
突然想明白了一件事, 语法应该是自解释的。什么意思呢,就是用户需要有一个学习语法的语法,而这个语法应该极度简单,他只要花上一分钟,甚至依靠直觉就能知道怎么用,透过这个口,以点窥面,让用户具备自主学习其他语法的能力。
用户2936994
2018/09/29
5340
如何实现语法的自解释(MLSQL易用性设计有感)
Databricks Delta Lake 介绍
Delta Lake 时间旅行允许您查询 Delta Lake 表的旧快照。时间旅行有很多用例,包括:
codingforfun
2019/05/15
2.5K0
Apache Paimon核心原理和Flink应用进阶
这是一篇较为完整的介绍Apache Paimon和Flink进阶应用的文章,你最好收藏一波。
王知无-import_bigdata
2023/12/12
2.4K0
Apache Paimon核心原理和Flink应用进阶
多MLSQL-Instance管理
MLSQL-Instance 就是一个MLSQL实例,但是不管什么原因,我们总是需要启动多个MLSQL实例的,这个时候我们就需要有 能够管理的和代理转发的工具,这个就是MLSQL-Cluster责任。MLSQL-Console则负责脚本管理,MLSQL-Cluster配置管理等,多用户等。
用户2936994
2019/01/28
4120
基于SparkSQL实现的一套即席查询服务
支持的数据源:hdfs、hive、hbase、kafka、mysql、es、mongo
UFO
2018/12/28
2.1K0
MLSQL 控制台预览版 推出啦
一个MLSQL Engine启动后就是一个MLSQL实例,通常我们需要启动多个MLSQL实例,做Load Balance 或者为不同业务线准备。 MLSQL Cluster 则提供了对多MLSQL实例的管理,通过类似K8s标签功能,MLSQL可以根据标签将请求发送到不同MLSQL实例上,并且提供了多种负载均衡策略,同时具备弹性调整某个负载均衡集群的MLSQL实例数。
用户2936994
2019/02/25
4380
Your Guide to NLP with MLSQL Stack (一)
MLSQL stack supports a complete pipeline of train/predict. This means the following steps can be in the same script:
用户2936994
2019/05/15
5980
Byzer 内置数据湖基础
该文是 [Delta Lake 数据源](https://docs.byzer.org/#/byzer-lang/zh-cn/datasource/dw/delta_lake) 一个补充。
用户2936994
2022/12/07
2760
Byzer 内置数据湖基础
Your Guide to DL with MLSQL Stack (3)
This is the third article of Your Guide with MLSQL Stack series. We hope this article series shows you how MLSQL stack helps people do AI job.
用户2936994
2019/05/17
5840
MLSQL Stack 1.5.0 版本发布
1.5.0好像是MLSQL历时最长的一个版本。从九月初份到一月初,四个多月时间。这四个月搞出了很多大事情。这个版本,经过很多的用户实际的使用反馈(包括一些金融公司也有在使用),已经很稳定了,可以进入生产环境中使用。
用户2936994
2022/07/21
2810
MLSQL Stack 1.5.0 版本发布
Kafka集群安装
①.kafka需要依赖zk管理,在搭建kafka集群之前需要先搭建zk集群: https://my.oschina.net/u/2486137/blog/1537389 ②.从apache kafka官网下载kafka( 二进制版本)        注意下载的版本否则会在启动时报错:找不到主类Kafka.kafka. 我这里使用的是2.10版本. ③.配置config/server.properties文件: # Licensed to the Apache Software Foundation (ASF
用户1215919
2018/02/27
1.2K0
Streaming与Hudi、Hive湖仓一体!
也就是,可以将HDFS和Hudi结合起来,提供对流处理的支持能力。例如:支持记录级别的更新、删除,以及获取基于HDFS之上的Change Streams。哪些数据发生了变更。
ApacheHudi
2021/07/05
3.5K0
Streaming与Hudi、Hive湖仓一体!
相关推荐
MLSQL Stack 让流调试更加简单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档