hive - 添加到 Hive 表(ORC 格式)中的新记录是附加到最后一个条带还是一个全新的条带?
问题描述
假设我创建了一个 ORC 格式的 hive 表并将 1M 记录插入到表中,这创建了一个具有 17 个条带的文件。最后一个条带未满。
然后我在这个表中插入了另外 100 条记录,新的 100 条记录会附加到最后一个条带中还是会创建一个新条带?
我曾尝试在 HDFS 集群上对其进行测试,似乎每次我们插入新记录时,都会创建一个新文件(当然,也会创建新的条带)。想知道为什么?
解决方案
原因是 HDFS 不支持编辑文件。
因此when we insert data
,始终会在 Hive 表中创建新文件。
Alter table <table_name> CONCATENATE;
(或者)
您可以插入覆盖您选择的同一个表以将所有小文件合并到大文件中。
insert overwrite <db_table>.<table1> select * from <db_table>.<table1>
您还可以使用sort by distribution by来控制在 HDFS 目录中创建的文件数。
推荐阅读
- django - 无法加载 DetailView 模板。URL 生成错误
- elasticsearch - Elasticsearch CRUD 是否需要刷新?
- javascript - 接收有关 JQuery 可排序序列化的错误
- javascript - javascript数组在控制台中不起作用
- python - Python 等价于 Matlab 的 surfnorm
- python - “开发一个 python 程序来打印 1 到 15 范围内每个交替数字的平方根。” 备用号码是什么意思?
- c# - C#中的实例和对象之间有区别吗?
- python - 如何从 Django 中的临时存储中获取图像
- django - 如何在 mongoengine 中更新多嵌入文档
- python - 使用逻辑回归预测鸢尾花种类