更新配置单元事务表中的数据如何导致 HDFS 中的文件 creation/updation
How updating data in hive transaction tables result in file creation/updation of files in HDFS
通过在 Hive 中启用事务,我们可以更新记录。假设我为我的配置单元使用 AVRO 格式 table。
https://hortonworks.com/hadoop-tutorial/using-hive-acid-transactions-insert-update-delete-data/
hive 如何负责更新 AVRO 文件并在不同的服务器上再次复制它们(因为复制因子是 3)。
我找不到一篇很好的文章来解释这一点,以及在 Hive 中使用 ACID 的后果。由于建议将 HDFS 用于非更新或仅附加文件,因此如何在工作之间更新记录。
请指教
table 的数据存储在一组基本文件中。新记录、更新和删除存储在增量文件中。为每个改变 table 的交易(或者在 Flume 或 Storm 等流代理的情况下,每批交易)创建一组新的增量文件。在读取时,reader 合并基本文件和增量文件,在读取时应用任何更新和删除。
随后,主要压缩将较大的增量文件 and/or 基础文件合并到另一个基础文件中,定期间隔将加速进一步的 table 扫描操作。
Inserted/updated/deleted 数据会定期压缩以保存 space 并优化数据访问。
ACID 事务功能目前有以下限制:
- 它仅适用于 ORC 文件。开源中有一个 JIRA 来添加对 Parquet tables.
的支持
- 它仅适用于未排序的分桶 tables。
- 事务不支持 INSERT OVERWRITE。
- 它不支持 BEGIN、COMMIT 或 ROLLBACK 事务。
- 不推荐用于 OLTP。
ACID 不支持 AVRO 文件,HDFS 块替换策略也适用于 ACID tables。
以下 link 可能更有助于理解 Hive 中的 ACID tables。
http://docs.qubole.com/en/latest/user-guide/hive/use-hive-acid.html
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions
通过在 Hive 中启用事务,我们可以更新记录。假设我为我的配置单元使用 AVRO 格式 table。
https://hortonworks.com/hadoop-tutorial/using-hive-acid-transactions-insert-update-delete-data/
hive 如何负责更新 AVRO 文件并在不同的服务器上再次复制它们(因为复制因子是 3)。
我找不到一篇很好的文章来解释这一点,以及在 Hive 中使用 ACID 的后果。由于建议将 HDFS 用于非更新或仅附加文件,因此如何在工作之间更新记录。
请指教
table 的数据存储在一组基本文件中。新记录、更新和删除存储在增量文件中。为每个改变 table 的交易(或者在 Flume 或 Storm 等流代理的情况下,每批交易)创建一组新的增量文件。在读取时,reader 合并基本文件和增量文件,在读取时应用任何更新和删除。
随后,主要压缩将较大的增量文件 and/or 基础文件合并到另一个基础文件中,定期间隔将加速进一步的 table 扫描操作。
Inserted/updated/deleted 数据会定期压缩以保存 space 并优化数据访问。
ACID 事务功能目前有以下限制:
- 它仅适用于 ORC 文件。开源中有一个 JIRA 来添加对 Parquet tables. 的支持
- 它仅适用于未排序的分桶 tables。
- 事务不支持 INSERT OVERWRITE。
- 它不支持 BEGIN、COMMIT 或 ROLLBACK 事务。
- 不推荐用于 OLTP。
ACID 不支持 AVRO 文件,HDFS 块替换策略也适用于 ACID tables。
以下 link 可能更有助于理解 Hive 中的 ACID tables。
http://docs.qubole.com/en/latest/user-guide/hive/use-hive-acid.html
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions