数据的存储方式(Parquet、ORC)

2023-10-31

数据的存储方式

目前的数据存储方式分为行式和列式。

按行存储

  常见的关系型数据库,如Oracle、DB2、MySQL、SQL SERVER都是行式存储的, 在我们查询的条件需要得到大多数列的时候, 相对列式格式,查询效率更高。基础逻辑存储单元是行数据,在存储介质中是以连续存储的形式存在的。

Hive中的的TextFile文件存储格式中的数据就按行式存储的。

按列存储

大部分分布式分析型数据库,如Hbase、hive、Druid采用是列式存储,

  列式存储, 它存储的方式是采用数据按照行分块,每个块按照列存储。

数据表格
姓名 性别 年龄
张三 20
李四 30
王五 40
赵六 50
逻辑表
张三 李四 王五 赵六 20 30 40 50
按列存储
张三 20 李四 30 王五 40 赵六 50
按行存储

简单的对比

行式存储 列式存储
特点 1.每一行的所有字段都存在一起
2.查询时即使只涉及某几列,所有数据都会被读取
3.读取时硬盘寻址范围很大
4.适合事务性操作
5.主要用于在线交易处理(OLTP)场景的数据存储
1.每一列的所有数据存在一起,不同列之间支持分开存储
2.查询时只有涉及到的列会被读取
3.读取时硬盘寻道范围小
4.不适合事务性操作
5.主要用于在线分析处理(OLAP)场景的数据存储
优点 1.对数据进行插入和修改操作很方便
2.适合随机查询;在整行的读取上,要优于列式存储
1.采用每一列单独存储时,任何列都具有索引能力
2.同列数据具有相同类型,易于压缩,占用空间小
3.为每一列创建一个字典,存储的时候就仅存储数字编码,降低了存储空间需求
4.利用数据聚合操作
缺点 1.不适合扫描,这意味着要查询一个范围的数据
2.为加速查询会建索引,建立索引很耗时
3.不利于压缩,占用空间大
4.不适合聚合操作
1.插入和修改操作麻烦,不适合数据频繁变更的场景
2.查询完成时,被查询的列要重新进行组装
**文件格式 ** Text File、Sequence File、 Avro file RCFile、ORC File、Parquet、Arrow

数据通用压缩算法

  • Gzip
  • bzip2
  • LZO
  • LZ4
  • Snappy
  • zstd

Parquest

(一句话介绍)

Apache Parquet是一种列式存储格式,最初的目的是可供Hadoop生态系统中的任何项目使用,无论选择何种数据处理框架、数据模型或编程语言。

支持高校的压缩和编码方案。具有良好的向后兼容性。

文件布局

概念

block (hdfs块): 代表hdfs中的一个块,其含义对于Parquet这种文件格式来说是不变的。Parquet文件格式被设计为能在hdfs之上很好地工作。

File:一个hdfs文件,必须包括文件的元数据。它不需要实际包含数据。

Row group行组: 将数据横向分割成行的逻辑。对于行组来说,没有任何物理结构是可以保证的。一个行组由数据集中的每一列的列块组成。

Column chunk 列块: 一个特定列的数据块。这些数据生活在一个特定的行组中,并保证在文件中是连续的。

Page 页: 列块被划分为页。在概念上,一个页面是一个不可分割的单位(在压缩和编码方面)。在一个列块中可以有多个页面类型,它们交错排列。

在层次上,一个文件由一个或多个行组组成。一个行组中每一列正好包含一个列块。列块包含一个或多个页面。

并行处理的单元
处理框架 处理粒度
MapReduce File/Row group
IO Column chunk
编码/压缩 Page
文件逻辑结构图解

为了支持嵌套类型的数据,Parquet使用了definition层和repetition层的Dremel编码。

Definition 层指定了列的路径中有多少个可选字段被定义。

Repetition 层指定路径中的重复字段在什么地方有重复值。(Repetition 重复 重叠)

配置
Row Group Size 行组的大小

更大的行组允许更大的列块,从而可以执行更大的连续IO。较大的组也需要在写入路径上有更多的缓冲(或两次写入)。我们推荐行组大小为(512MB - 1GB)。由于整个行组可能需要被读取,我们希望它能完全容纳在一个HDFS块中。因此,HDFS块的大小也应该被设置得更大。一个优化的读取设置将是: 1GB的行组,1GB的HDFS块大小,每个HDFS文件有一个HDFS块。

❓HDFS的块的大小不是128MB或者512GB的吗?可以调整成1GB?或者是设置成128MB的倍数

Data Page Size 数据页的大小

数据页应该被认为是不可分割的(即最小的数据处理单元),所以较小的数据页允许更精细的读取(例如,单行查找)。较大的页面尺寸会产生较少的空间开销(较少的页眉)和解析开销(处理页眉)。注意:对于顺序扫描,预计不会一次读取一个页面;这不是IO块。建议页面大小为8KB

元数据

有三种类型的元数据:文件元数据(FileMetaData)、列(chunk)元数据和页眉元数据。所有的thrift结构都使用TCompactProtocol进行序列化。

数据页

对于数据页,这3个信息是在页眉之后连续编码的。我们有

  • 定义层的数据、
  • 重复层的数据、
  • 编码的值。页眉中指定的大小是所有3个部分的和。

数据页是必要存在的数据的。根据模式的定义,定义层和重复层是可选的。如果列不是嵌套的(即列的路径长度为1),我们不对重复层进行编码(它总是有1的值)。对于需要的数据,定义层被跳过(如果编码,它将总是有最大定义层的值)。

例如,在列非嵌套且是必需的情况下,页面中的数据只是编码后的值。

Hive下的Parquet实验

-- 创建专用数据库
create DATABASE if not EXISTS test_fileformat COMMENT '文件格式测试的库' WITH DBPROPERTIES ('createUser'='顾栋','date'='20230609');

-- 创建无非嵌套字段表
CREATE TABLE test_fileformat.parquet_test (
 id int,
 name string,
 d string
)
STORED AS PARQUET tblproperties ("orc.compress"="NONE");
-- 表创建完成之后 并非立即产生hdfs文件,只是创建了对于的hdfs路径

 INSERT INTO TABLE test_fileformat.parquet_test VALUES (1, '张三', '我是张三,呼叫李四'), (2, '李四', '我是李四,呼叫张三');
 INSERT INTO TABLE test_fileformat.parquet_test VALUES (3, '王五', '我是王五,呼叫赵六'),(4, '赵六', '');
 
 Drop table test_fileformat.parquet_test;
 
 -- 创建含嵌套字段表 tag是一个复杂类型 是一个struct的数组 struct里面有两个字段tagid,weight
create table test_fileformat.parquet_nested_test (uid string ,tag array<struct<tagid:string,weight:string>>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ' '
MAP KEYS TERMINATED BY ':'
STORED AS PARQUET tblproperties ("orc.compress"="NONE");

 INSERT INTO TABLE test_fileformat.parquet_nested_test select '221190xxx9',array(named_struct('tagid',cast(0.30 as string),'weight',cast(0.31 as string)),named_struct('tagid',cast(0.21 as string),'weight',cast(0.11 as string))) as tag;
 
 INSERT INTO TABLE test_fileformat.parquet_nested_test select '221190xxx9',array(named_struct('tagid',cast(0.30 as string),'weight',cast(0.31 as string)),named_struct('tagid',cast(0.21 as string),'weight',cast(0.11 as string))) as tag;
 
 Drop table test_fileformat.parquet_nested_test;
 
 DROP DATABASE test_fileformat;

文件系统

# hadoop dfs -ls -r /user/bigdata/hive/warehouse/test_fileformat.db/parque_test
-rwxr-xr-x   2 bigdata supergroup        595 2023-06-09 11:16 /user/bigdata/hive/warehouse/test_fileformat.db/parquet_test/000000_0

# hadoop dfs -ls -r /user/bigdata/hive/warehouse/test_fileformat.db/parquet_nested_test
 -rwxr-xr-x   2 bigdata supergroup        588 2023-06-09 14:46 /user/bigdata/hive/warehouse/test_fileformat.db/parquet_nested_test/000000_0_copy_1
-rwxr-xr-x   2 bigdata supergroup        588 2023-06-09 14:46 /user/bigdata/hive/warehouse/test_fileformat.db/parquet_nested_test/000000_0

Parquet简单工具的使用

根据Parquet文件的定义,每一个Parquet文件都可以单独进行读写和分析。可以使用parquet-cli工具进行简单操作。

java -cp parquet-cli-1.13.1.jar;dependency/* org.apache.parquet.cli.Main meta 000000_0
java -cp parquet-cli-1.13.1.jar;dependency/* org.apache.parquet.cli.Main schema 000000_0
java -cp parquet-cli-1.13.1.jar;dependency/* org.apache.parquet.cli.Main footer 000000_0

在这里插入图片描述

bag:袋子;一套,通过repetition:REPEATED表达字段的嵌套
在这里插入图片描述

支持的组件

  • Apache Hive
  • Apache HDFS
  • Apache Doris
  • Apache iceberg
  • Apace hudi

Apache ORC

(一句话介绍)

Apache Orc也是一种列式存储格式,最初主要是为了极大加速Apache Hive和提高存储在Apache Hadoop中的数据的存储效率,目的是支持高速处理和减小文件大小。

目前有Orc V0(伴随Hive 0.11发布)和ORC V1(伴随Hive 0.12发布)两个版本。

文件布局

文件由1个或1个以上的Stripe,一个文件页脚,一个后记组成。

文件逻辑结构图解

Orc文件的读取是反向读取,先读取文件尾部,解析出必要信息,再去读取具体数据。

文件尾部由三部分组成;

  • 文件元数据:包含stripe粒度的列统计。这些统计信息基于每个stripe评估的谓词下推启用输入拆分消除。在谓词下推的是时候会根据这些统计信息进行对stripe进行评估,来筛选数据。
  • 文件页脚:页脚部分包含文件正文的布局、类型模式信息、行数和每列的统计信息。
  • 后记(Postscript):提供解析文件其余部分的必要信息,包括文件的页脚和元数据部分的长度、文件的版本以及使用的一般压缩类型(例如 none、zlib 或 snappy)。
Stripe

文件的主体被分成stripes。 每个stripe都是独立的,可以仅使stripe被本身的字节与文件的页脚和后记相结合来读取(每个stripe可以被独立的读取)。大小一般为200+MB。

stripe包含三个部分:

  • 索引流:未加密的数据在前,加密的数据在后,行组索引由每个原始列的 ROW_INDEX 流组成,每个原始列都有一个行组条目。 行组由编写器控制,默认为 10,000 行。 每个 RowIndexEntry 给出列的每个流的位置和该行组的统计信息。因为在默认的流式传输情况下不需要读取索引。 它们仅在使用谓词下推或读取器查找特定行时加载使用。
  • 数据流:未加密的数据在前,加密的数据在后
  • stripe的页脚:包含每一列的编码和流的目录,包括它们的位置

encryptStripeId 和 encryptedLocalKeys 支持列加密。 它们设置在每个带有列加密的 ORC 文件的第一个stripe上,之后不设置。

Hive下的Parquet实验

-- 创建专用数据库
create DATABASE if not EXISTS test_fileformat COMMENT '文件格式测试的库' WITH DBPROPERTIES ('createUser'='顾栋','date'='20230609');

-- 创建无非嵌套字段表
create table test_fileformat.orc_test (
 id int,
 name string,
 d string
) stored as orc tblproperties ("orc.compress"="NONE");

 INSERT INTO TABLE test_fileformat.orc_test VALUES (1, '张三', '我是张三,呼叫李四'),(2, '李四', '我是李四,呼叫张三');
 INSERT INTO TABLE test_fileformat.orc_test VALUES (3, '王五', '我是王五,呼叫赵六'),(4, '赵六', '');
 
 Drop table test_fileformat.orc_test;
 
 -- 创建含嵌套字段表 tag是一个复杂类型 是一个struct的数组 struct里面有两个字段tagid,weight
create table test_fileformat.orc_nested_test (uid string ,tag array<struct<tagid:string,weight:string>>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ' '
MAP KEYS TERMINATED BY ':'
STORED AS orc tblproperties ("orc.compress"="NONE");

 INSERT INTO TABLE test_fileformat.orc_nested_test select '221190xxx9',array(named_struct('tagid',cast(0.30 as string),'weight',cast(0.31 as string)),named_struct('tagid',cast(0.21 as string),'weight',cast(0.11 as string))) as tag;
 
 INSERT INTO TABLE test_fileformat.orc_nested_test select '221190xxx9',array(named_struct('tagid',cast(0.30 as string),'weight',cast(0.31 as string)),named_struct('tagid',cast(0.21 as string),'weight',cast(0.11 as string))) as tag;
 
 Drop table test_fileformat.orc_nested_test;
 
 DROP DATABASE test_fileformat;

文件系统

 # hadoop dfs -ls -r /user/bigdata/hive/warehouse/test_fileformat.db/orc_test

-rwxr-xr-x   2 bigdata supergroup        502 2023-06-09 17:16 /user/bigdata/hive/warehouse/test_fileformat.db/orc_test/000000_0_copy_1
-rwxr-xr-x   2 bigdata supergroup        611 2023-06-09 17:15 /user/bigdata/hive/warehouse/test_fileformat.db/orc_test/000000_0

# hadoop dfs -ls -r /user/bigdata/hive/warehouse/test_fileformat.db/orc_nested_test

-rwxr-xr-x   2 bigdata supergroup        590 2023-06-09 17:19 /user/bigdata/hive/warehouse/test_fileformat.db/orc_nested_test/000000_0_copy_1
-rwxr-xr-x   2 bigdata supergroup        590 2023-06-09 17:19 /user/bigdata/hive/warehouse/test_fileformat.db/orc_nested_test/000000_0

ORC简单工具的使用

# 查看orc的元数据信息
java -jar orc-tools-1.8.3-uber.jar meta -p 000000_0

# 查看orc文件中的记录数
java -jar orc-tools-1.8.3-uber.jar data -n 2 000000_0

在这里插入图片描述
在这里插入图片描述

支持的组件

  • Apache Hive
  • Apache HDFS
  • Apache Doris
  • Apache iceberg
  • Apace hudi

数据存储中的编码

字典编码

位打包

增量编码

游程编码

二进制编码方式

Thrift

avro

arrow

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据的存储方式(Parquet、ORC) 的相关文章

  • Hive中group by后是否可以连接字符串字段

    我正在评估 Hive 需要在 group by 之后进行一些字符串字段连接 我找到了一个名为 concat ws 的函数 但看起来我必须显式列出所有要连接的值 我想知道是否可以在 Hive 中使用 concat ws 做这样的事情 这是一个
  • AWS Athena 扁平化来自嵌套 JSON 源的数据

    我想从 Athena 中的嵌套 JSON 创建一个表 描述的解决方案here http docs aws amazon com athena latest ug json html使用 hive Openx JsonSerDe 等工具尝试在
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • Hadoop安装问题:

    我跟着this http www bogotobogo com Hadoop BigData hadoop Install on ubuntu single node cluster phpHadoop 安装教程 不幸的是 当我运行全部启动
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • 计算行的排名

    我想根据一个字段对用户 ID 进行排名 对于相同的字段值 排名应该相同 该数据位于 Hive 表中 e g user value a 5 b 10 c 5 d 6 Rank a 1 c 1 d 3 b 4 我怎样才能做到这一点 可以使用ra
  • 当气流 initdb 时,导入错误:无法导入名称 HiveOperator

    我最近安装了airflow对于我的工作流程 在创建项目时 我执行了以下命令 airflow initdb 返回以下错误 2016 08 15 11 17 00 314 init py 36 INFO Using executor Seque
  • 遍历 ArrayWritable - NoSuchMethodException

    我刚刚开始使用 MapReduce 并且遇到了一个奇怪的错误 我无法通过 Google 回答该错误 我正在使用 ArrayWritable 制作一个基本程序 但是当我运行它时 在Reduce过程中出现以下错误 java lang Runti
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 在 Hive 中获取数据的交集

    我在配置单元中有以下数据 userid cityid 1 15 2 15 1 7 3 15 2 8 3 9 3 7 我只想保留具有 cityid 15 和 cityid 7 的用户 ID 在我的示例中 它将是用户 ID 1 和 3 我试过
  • 猪参考

    我正在学习 Hadoop Pig 并且我总是坚持引用元素 请查找下面的示例 groupwordcount group chararray words bag of tokenTuples from line token chararray
  • 当从 HDFS 手动删除分区数据时,如何更新 Hive 中的分区元数据

    自动更新Hive分区表元数据的方法是什么 如果新的分区数据被添加到HDFS 不执行alter table添加分区命令 然后我们可以通过执行命令 msck Repair 来同步元数据 如果从HDFS中删除了大量分区数据 没有执行alter t
  • 我们可以预测 Hive SELECT * 查询结果的顺序吗?

    是否有可能a的结果的顺序SELECT query no ORDER BY 如果使用相同的 DBMS 作为 Metastore 那么总是相同的吗 所以 只要使用MySQL作为Metastore 结果的顺序就为aSELECT 查询将始终相同 如
  • 运行时异常:java.lang.NoSuchMethodException:tfidf$Reduce.()

    如何解决这个问题 tfidf是我的主类 为什么运行jar文件后会出现这个错误 java lang RuntimeException java lang NoSuchMethodException tfidf Reduce
  • 适用于 Hadoop 的 DynamoDB 输入格式

    我必须使用 Hadoop mapreduce 处理保留在 Amazon Dynamodb 中的一些数据 我在互联网上搜索 Dynamo DB 的 Hadoop InputFormat 但找不到它 我对 Dynamo DB 不熟悉 所以我猜测
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • 如何创建 HIVE 表来读取分号分隔值

    我想创建一个 HIVE 表 该表将以分号分隔的值读取 但我的代码不断给出错误 有没有人有什么建议 CREATE TABLE test details Time STRING Vital STRING sID STRING PARTITION
  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • 如何跟踪hadoop中哪个数据块在哪个数据节点?

    如果复制一个数据块 会复制到哪个数据节点 是否有任何工具可以显示复制块存在的位置 如果您知道文件名 则可以通过 DFS 浏览器查找 转到您的 namenode Web 界面 说 浏览文件系统 并导航到您感兴趣的文件 在页面底部 将列出文件中

随机推荐

  • python验证码识别MuggleOCR通用识别使用

    先来看看MuggleOCR简介 白嫖 这是一个为麻瓜设计的本地OCR模块 只需要简单几步操作即可拥有两大通用识别模块 让你在工作中畅通无阻 这套模型是基于 https github com kerlomz captcha trainer 训
  • JSP注释(4种)

    说到注释 相信大家肯定都不陌生 它是对程序代码的解释和说明 注释可以提高代码的可读性 让他人能够更加轻松地了解代码 从而提高团队合作开发的效率 在 JSP 中可以使用以下 4 种注释 HTML 注释 带有 JSP 表达式的注释 隐藏注释 脚
  • 登录和注册的基本实现,超简单!

    前序 相信有很多的人在刚刚做项目的实现 登录与注册功能的实现是基本的要求 要是刚刚开始写的小伙伴肯定会有很多的困惑 这里我介绍一下自己的写法 希望能帮到你 也希望能免费点个小 这里就以之前我写的一个为例 大家可以根据自己的规则来更改 一 登
  • python 短路法提高二叉堆插入效率

    在学习 problem solving with algorithms and data structure using python 中的二叉堆时 其插入数据方法是将这个数据放在列表的尾部 然后通过一次次与父节点进行比较 并且交换 实现顺
  • 用Log4j 2记录日志

    说明 maven工程中增加对Log4j 2的依赖 下面代码示例的maven工程中的pom xml文件中需要增加对Log4j 2的依赖
  • -moz-transform:rotate()

    目前越来越多的浏览器兼容CSS3标准了 就连IE浏览器老大哥也开始向CSS3低头 微软宣布IE9浏览器支持更多的CSS3属性 IE9更注重HTML5标准 不过CSS3里有一个使对象旋转的属性transform rotate 号称兼容CSS3
  • 2023高教社杯 国赛数学建模B题思路 - 多波束测线问题

    1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术 声波在均匀介质中作匀 速直线传播 在不同界面上产生反射 利用这一原理 从测量船换能器垂直向海底发射声波信 号 并记录从声波发射到信号接收的传播时间
  • springboot定时任务

    1 配置 在主函数加 EnableScheduling 定时任务 package com biubiu import org springframework boot SpringApplication import org springf
  • golang的web框架Gin(一)---Gin的安装与初体验

    简介 1 1 介绍 Go世界里最流行的Web框架 Github上有32K star 基于httprouter开发的Web框架 中文文档齐全 简单易用的轻量级框架 Gin是一个golang的微框架 封装比较优雅 API友好 源码注释比较明确
  • [已解决]运行 ‘tomcat8‘ 出错: 无法打开调试器端口 (127.0.0.1:6672): java.net.SocketException

    解决 运行 tomcat8 出错 无法打开调试器端口 127 0 0 1 6672 java net SocketException 修改HTTP port端口号 没占用的端口号都可以 建议8000以上的数字 只要不是现在的端口号就可以 修
  • ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

    参考 Linux之ARM IMX6U 裸机按键输入实验 GPIO的输出与输入 作者 一只青木呀 发布时间 2020 08 17 21 43 37 网址 https blog csdn net weixin 45309916 article
  • Python实现顺序表

    Python实现顺序表 关于顺序表的介绍 请参考 https blog csdn net weixin 43790276 article details 103848039 Python 中的列表和元组都属于顺序表 下面根据顺序表的特性 自
  • 段错误的调试方法(printf输出、GDB)

    参考 段错误产生原因及简单的调试方法 参考 如何解决段错误 参考 C语言gdb调试之精髓 常用命令 多进程 多线程 程序日志 网址 https www bilibili com video BV1ei4y1V758 from search
  • 1031. 查验身份证(15)

    一个合法的身份证号码由17位地区 日期编号和顺序编号加1位校验码组成 校验码的计算规则如下 首先对前17位数字加权求和 权重分配为 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 然后将计算的和对11取模得到值Z 最
  • 艺赛旗RPA--经验分享:Python 中的“特殊”函数

    了解RPA www i search com cn 学习RPA https support i search com cn 私有函数 魔法函数 回调函数 在任何编程语言中 都会规定某些对象 属性 方法 函数 类等 只能够在某个范围内访问 出
  • Linux MISC 驱动实验

    目录 MISC 设备驱动简介 硬件原理图分析 实验程序编写 修改设备树 beep 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 misc 的意思是混合 杂项的 因此MISC 驱动也叫做杂项驱动 也就是当我们板子
  • Docker使用docker compose部署zfile 实现在线浏览下载linux中的文件

    gt Docker及docker compose的安装点这里 创建 docker compose yml 文件 version 3 services zfile image stilleshan zfile container name z
  • Eudcoder--Java面向对象(第五章)- 包装类

    大家好啊 好久不见 新的一期来啦 让我们一起学习 快来 教你一个解除部分网课平台关于复制粘贴限制的方法 第一题 请仔细阅读右侧代码 根据方法内的提示 在Begin End区域内进行代码补充 具体任务如下 完成基本数据类型与包装类之间的相互转
  • echarts.common.min.js:22 Uncaught Error: Component series.bar  not exists. Load it first

    一 统计表无法显示 浏览器控制台报错 echarts common min js 22 Uncaught Error Component series bar not exists Load it first at Function Vn
  • 数据的存储方式(Parquet、ORC)

    文章目录 数据的存储方式 按行存储 按列存储 Parquest 文件布局 概念 并行处理的单元 配置 Row Group Size 行组的大小 Data Page Size 数据页的大小 元数据 数据页 Hive下的Parquet实验 Pa