我正在mapreduce中构建一个日志分析程序。我使用的是maxmind geoip数据。现在我想把geoip数据放到分布式缓存中。我正在eclipse中开发我的应用程序。这就是我要做的
Job job = new Job();
DistributedCache.addCacheFile(new URI(args[3]), job.getConfiguration());
其中args[3]将具有路径。
我在用它
protected void setup(Context context) {
try {
//String dbfile = "GeoIP//GeoIPCountry.dat";
org.apache.hadoop.conf.Configuration conf = context.getConfiguration();
Path[] dbfile = DistributedCache.getLocalCacheFiles(conf);
// GEOIP_MEMORY_CACHE - load database into memory, faster
// performance but uses more memory, Increase the JVM heap Size
cl = new LookupService(dbfile.toString(), LookupService.GEOIP_MEMORY_CACHE);
} catch (Exception e) {
System.err.println("Error opening GeoIP data file.");
System.err.println(e);
System.exit(2);
}
}
但在运行时,我得到以下错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method addCacheFile(URI, Configuration) in the type DistributedCache is not applicable for the arguments (URI, Configuration)
我搞不清楚出了什么问题。请帮忙
1条答案
按热度按时间vohkndzv1#
它选择了错误的课程:
检查您的导入
URI
以及Configuration
班级。根据文件,他们应该
java.net.URI
以及org.apache.hadoop.conf.Configuration
我想您可能把jdk中的javax.security.auth.login.configuration类搞砸了。这里不应该用这个。