hive—在hadoop中处理主数据更新

xytpbqjk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(549)

我开始了一个分析项目。用例是理解客户购买模式和数据源,如web日志、关系数据库(其中包含产品主数据、客户主数据)。关系数据库团队和hadoop团队完全不同。在架构讨论期间,讨论了主数据(产品、客户等)将是一次性加载,增量更新将是从oracle到hdfs的每日sqoop,使用hive需要生成当前视图(包含所有最新产品更改)。从产品细节开始。
在oracle方面,产品主数据约为10g。
每天的增量从5 mb到100 mb不等。
根据我的理解,从长远来看,创建这样的小文件将是name节点的负担。
当任何人遇到这样的解决方案,你是如何处理的?

sqyvllje

sqyvllje1#

我看还没有什么问题。如果您从一个大文件开始,每天添加一个文件,那么一年后您将得到约1000个文件,这不是问题(至少对于名称节点不是问题)。
尽管如此,在hdfs中保存小文件并不是最佳选择,不管文件量有多大。
我建议您采用一种实用的方法,在足够长的时间后合并文件,例如:
在您的表(产品主数据)上创建每月一次的分区,每天将新文件插入到表中,在月结束后,将数据插入并覆盖回同一分区。
如果数据Assert不是简单地通过插入完成的,而是有更复杂的逻辑,那么解决方案可能是创建主表,然后将增量数据复制到hdfs位置,并在该位置上创建外部表。
将这两个表合并使用 union all 在一个 view 以及创建一个加载过程,以便在可能的情况下偶尔将数据从hdfs加载到主表。
如果您确实遇到了关于太多小文件的名称节点争用,您可以在这里了解解决“小文件问题”的方法。

相关问题