我有一个可以部署到Amazon EMR的hadoop作业。因为EMR提供了hadoop-core
jar,所以我已将pom
中的依赖项配置为provided
:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>0.20.2-cdh3u6</version>
<scope>provided</scope>
</dependency>
问题在于,当我想在intellij中调试jar时,它找不到这个jar中的一个类org.apache.hadoop.util.RunJar
。
在intellij中调试/运行jar时,是否可以将Intellij配置为在类路径中包含此jar,但是仍然要从输出jar中排除这个jar?
我本地计算机上实际jar的路径是/Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar
- 我尝试将-cp /Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar
添加到运行配置中的VM选项,但随后该作业根本无法运行。
答案 0 :(得分:0)
假设您正在使用依赖示例中的maven,您可以使用多个maven配置文件来解决此问题。
您可以拥有包含public static Task WaitLoad(this WebBrowser webBrowser)
{
var tcs = new TaskCompletionSource<object>();
WebBrowserNavigatingEventHandler navigatingHandler = (sender, args) => timerInternalWait.Stop();
webBrowser.Navigating += navigatingHandler;
WebBrowserDocumentCompletedEventHandler documentCompletedHandler = (sender, args) => tcs.SetResult(null);
try
{
webBrowser.DocumentCompleted += documentCompletedHandler;
await tcs.Task;
}
finally
{
webBrowser.DocumentCompleted -= documentCompletedHandler;
await Task.Delay(1000);
}
return tcs.Task;
}
public static Task<bool> WaitLoad(this WebBrowser webBrowser, int timeout)
{
var webBrowserTask = webBrowser.WaitLoad();
return await Task.WhenAny(webBrowserTask, Task.Delay(timeout)) == webBrowserTask;
}
部分的prod
和debug
个人资料。对于所有与hadoop相关的依赖项,调试者可以跳过dependencies
标记,其中包括最终JAR中的依赖项。
您可以阅读有关maven个人资料here的更多信息。