如何从IntelliJ(或其他IDE)运行Spark测试
问题描述:
我正在尝试为某些Spark代码创建测试。获取SparkSession对象时,以下代码失败。注:gradle这个my_module:该测试从CLI运行时,运行正常建立如何从IntelliJ(或其他IDE)运行Spark测试
@Test
def myTest(): Unit = {
val spark = SparkSession.builder().master("local[2]").getOrCreate()
...
}
错误:
java.lang.IllegalArgumentException: Can't get Kerberos realm
...
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: KrbException: Cannot locate default realm
我的设置:的IntelliJ +摇篮+的Mac OS
问题:
- 如何在IntelliJ中运行Spark测试?
- 运行“本地”
答
通过你的代码时,为什么星火寻找Kerberos的所有你需要运行从JUnit中,来自的IntelliJ没有特别星火,你可以尝试像https://github.com/sleberknight/sparkjava-testing
_“为什么是Spark在运行'local'时一直在寻找Kerberos“_ - Spark始终引导Hadoop的'Configuration';如果Hadoop客户端在CLASSPATH中找到有效的'core-site.xml'(取决于'HADOOP_HOME'和/或'HADOOP_CONF_DIR'和/或'spark.driver.extraClassPath'),那么您最终可能会得到一个默认的文件系统集到具有Kerberos身份验证的HDFS!如果缺少实际的conf文件,Hadoop客户端将恢复为硬编码的默认设置,即本地文件系统和无Kerberos。 –
@SamsonScharfrichter这是一个非常有用的笔记。我们在windows上使用intellij获得大多数开发人员的Kerberos认证失败,但我的Mac/OSX工作方式不知如何。真正奇怪的是,Windows机器在Gradle /命令行中运行相同的测试。希望你提供的这些信息能帮助我追踪这个问题。再次感谢。 –
@ Lo-Tan>如果它是一个特定于Windows的问题_ **和** _你看到关于'本地库'的警告,那么可以使用'java.library.path'设置为'%HADOOP_HOME%\ bin'作为一种解决方法 - 或者至少导致更有意义的例外。参看https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-tips-and-tricks-running-spark-windows.html,同时记住PATH是Windows查找DLL的默认位置(就像LD_LIBRARY_PATH是Linux查找.so动态链接库的默认位置) –