数据湖、Jcmd

一、什么是数据湖

维基百科上定义,数据湖(Data Lake)是一个以原始格式存储数据的存储库或系统。它按原样存储数据,而无需事先对数据进行结构化处理。一个数据湖可以存储结构化数据(如关系型数据库中的表),半结构化数据(如CSV、日志、XML、JSON),非结构化数据(如电子邮件、文档、PDF)和二进制数据(如图形、音频、视频)。

二、数据湖之Delta Lake

官网:https://delta.io/

架构:
在这里插入图片描述

三、delta特性简介

delta底层是完全基于spark的,而且可以支持实时和离线,对于多读少更新,多批次更新的场景也是可以的。
ACID事务:为数据湖提供ACID事务,确保在多个数据管道并发读写数据时,数据能保持完整性。
数据版本管理和时间旅行:提供了数据快照,使开发人员能够访问和还原早期版本的数据以进行审核、回滚或重现实验
可伸缩的元数据管理:存储表或者文件的元数据信息,并且把元数据也作为数据处理,元数据与数据的对应关系存放在事务日志中;
流和批统一处理:Delta中的表既有批量的,也有流式和sink的;
数据操作审计:事务日志记录对数据所做的每个更改的详细信息,提供对更改的完整审计跟踪;
Schema管理功能:提供自动验证写入数据的Schema与表的Schema是否兼容的能力,并提供显示增加列和自动更新Schema的能力;
数据表操作(类似于传统数据库的SQL):合并、更新和删除等,提供完全兼容Spark的Java/scala API;
统一格式:Delta中所有的数据和元数据都存储为Apache Parquet。

四、使用

<dependency>
  <groupId>io.delta</groupId>
  <artifactId>delta-core_2.12</artifactId>
  <version>0.7.0</version>
</dependency>
//创建一张表
val data = spark.range(0, 5)
data.write.format("delta").save("tmp/delta-table")
//读取一张表
spark.read.format("delta").load("tmp/delta-table").show()

五、jcmd

jcmd是JDK自带的调试工具,具有非常强大的功能。
jcmd是JDK7中正式引入的,有了jcmd,完全可以替换很多常用的其他工具,比如jstak和jmap。
jcmd可以将具体的诊断命令发送给JVM。为了安全起见,使用jcmd的用户必须跟运行的java程序具有同样的用户和用户组。
jcmd的调试命令有很多种,每一种调试命令又有自己的参数。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_32447301/article/details/107582438