我需要将一些参数传递给map程序。需要从数据库中获取这些参数的值,这些值是动态的。我知道如何使用Configuration API传递参数。如果我编写JDBC代码以从驱动程序或客户端中的数据库检索这些值,然后将值设置为配置API,那么此代码将执行多少次。驱动程序代码将在hadoop框架识别的每个数据节点上分发和执行以运行MR程序吗?
这样做的最佳方式是什么?
答案 0 :(得分:0)
是的,每台机器上都会执行驱动程序代码。 我建议在map-reduce程序之外获取数据,然后将其作为参数传递。
假设您有一个要执行的脚本,那么您只需从变量中的数据库中获取数据,然后将该变量传递给hadoop作业。
我认为这会做你的工作。
答案 1 :(得分:0)
如果您需要的数据很大(超过几千字节),则配置可能不合适。更好的选择是使用Sqoop将数据从数据库提取到HDFS。然后在你的地图中使用hadoop分配缓存或减少代码,你可以在没有任何参数传入的情况下获取这些数据。
答案 2 :(得分:0)
您可以在驱动程序代码中从DB中检索值。驱动程序代码每个作业只执行一次。