Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在hadoop中处理主数据更新_Hadoop_Hive_Master Data Management - Fatal编程技术网

在hadoop中处理主数据更新

在hadoop中处理主数据更新,hadoop,hive,master-data-management,Hadoop,Hive,Master Data Management,我开始了一个分析项目。用例用于理解客户购买模式和数据源,如Web日志、关系数据库(其中包含产品主数据、客户主数据)。关系数据库团队和hadoop团队完全不同。在架构讨论期间,讨论了主数据(产品、客户)将是一次性加载,增量更新将是从oracle到hdfs的每日sqoop,使用配置单元需要生成当前视图(包含所有最新的产品更改)。从产品细节开始 在Oracle端,产品主数据约为10G 每天的增量从5 MB到100 MB不等 根据我的理解,从长远来看,创建这样的小文件将是名称节点的负担 任何人遇到这样的

我开始了一个分析项目。用例用于理解客户购买模式和数据源,如Web日志、关系数据库(其中包含产品主数据、客户主数据)。关系数据库团队和hadoop团队完全不同。在架构讨论期间,讨论了主数据(产品、客户)将是一次性加载,增量更新将是从oracle到hdfs的每日sqoop,使用配置单元需要生成当前视图(包含所有最新的产品更改)。从产品细节开始

  • 在Oracle端,产品主数据约为10G
  • 每天的增量从5 MB到100 MB不等 根据我的理解,从长远来看,创建这样的小文件将是名称节点的负担


    任何人遇到这样的解决方案时,您是如何处理的?

    我还没有看到任何问题。 如果您从一个大文件开始,每天添加一个文件,那么一年后您将得到约1000个文件,这不是问题(至少不是名称节点)。
    不过,无论大小,在HDFS中保存小文件都不是最佳选择。
    我建议您对此采取应用程序方法,并在经过足够的时间后合并文件,例如:

  • 在表(product master)上创建每月分区,每天将新文件插入表中,在该月结束后,将数据插入并覆盖回同一分区
  • 如果数据断言不是简单地通过插入完成的,而是有一个更复杂的逻辑,那么解决方案可能是创建主表,然后将增量数据复制到HDFS位置,并在该位置上创建外部表。
    视图中使用
    union all
    组合这两个表,并创建一个加载过程,以便在可能的情况下偶尔将数据从HDFS加载到主表
  • 如果您确实遇到关于太多小文件的名称节点争用,您可以阅读解决“小文件问题”的方法