情况:我有一个 Postgres 数据库,其中包含一个包含数百万行的表,我正在尝试查询所有这些行以获取 MapReduce 作业。
根据我对 DBInputFormat 所做的研究,Hadoop 可能会尝试再次对新的映射器使用相同的查询,并且由于这些查询需要相当长的时间,我想以我认为的两种方式之一来防止这种情况发生向上:
1) Limit the job to only run 1 mapper that queries the whole table and call it
good.
或者
2) Somehow incorporate an offset in the query so that if Hadoop does try to use
a new mapper it won't grab the same stuff.
我觉得选项(1)似乎更有希望,但我不知道这样的配置是否可行。Option(2) 在理论上听起来不错,但我不知道如何跟踪正在制作的映射器,以及是否有可能检测到并重新配置。
感谢您的帮助,我正在寻找一种方法来提取所有数据库表数据并且不运行多个相同的查询,因为那会浪费时间。