假设在开始使用 HIVE 后有几百个演出,我想添加一列。从我看到的各种文章和页面中,我无法理解后果
- 需要存储空间(双倍?)
- 阻塞(我仍然可以在其他进程中读取表格)吗?
- 时间(它是快还是和 Mysql 变化一样慢?)
- 底层存储(我需要更改所有底层文件吗?如何使用 RCFile 来完成?)
任何人都可以在 HIVE 列中的结构上回答相同的问题。
如果将列添加到 hive 表,则仅更新底层元存储。
我希望这有帮助。
ALTER TABLE 命令仅修改元数据。基础数据保持不变。但是,用户有责任确保任何更改都不会破坏数据的一致性。
此外,对 METADATA 的任何更改都会应用于元存储(最典型的是 MySQL),在这种情况下,响应时间是可比较的。
更改定义只会修改文件的读取方式,而不是基础文件的内容。
如果您的文件是具有 3 列的制表符分隔文本,您可以创建一个表,该表使用类似 new_table(line STRING) 的方案来引用这些文件,该方案将读取整行而不根据制表符解析列。
当您添加一列时,由于记录中没有更多的分隔符,因此它将默认为 NULL,正如 Helmut 所提到的。