gpt4 book ai didi

database - 结合 Hadoop MapReduce 和数据库查询

转载 作者:可可西里 更新时间:2023-11-01 15:07:21 27 4
gpt4 key购买 nike

我正在运行的某个作业需要在处理一些大型 HDFS 文件之前从数据库(MySQL,尽管这不是很相关)收集一些元数据。此元数据将添加到文件中的数据中,并传递到后面的映射/合并/缩减阶段。

我想知道放置此查询的“正确”位置可能在哪里。我需要元数据在映射器开始时可用,但将它放在那里似乎是多余的,因为每个映射器都将执行相同的查询。我如何(如果有的话)执行一次此查询并在所有映射器之间共享其结果?是否有一种通用方法可以在执行任务的所有节点之间共享数据(除了将其写入 HDFS 之外)?谢谢。

最佳答案

您可以在主函数中进行 MYSql 查询,查询结果可以存储在字符串中。然后您可以将该变量设置为 Hadoop 作业配置对象。配置对象中设置的变量可以被所有映射器访问。

你的主类看起来像这样....
JobConf conf = new JobConf(Driver.class);
String metainfo = <You metadata Info goes here>;

conf.set("metadata",metainfo);



因此,在您的 map 类中,您可以按如下方式访问元数据值

publi class Map(...){

String sMetaInfo="";

public void configure(JobConf job) {

sMetaInfo= job.get("metadata"); // Getting the metadata value from Job Configureation Object

}
public void map(....){

// Map Function
}

}

关于database - 结合 Hadoop MapReduce 和数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868123/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com