如何从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测试?
  • 运行“本地”
+1

_“为什么是Spark在运行'local'时一直在寻找Kerberos“_ - Spark始终引导Hadoop的'Configuration';如果Hadoop客户端在CLASSPATH中找到有效的'core-site.xml'(取决于'HADOOP_HOME'和/或'HADOOP_CONF_DIR'和/或'spark.driver.extraClassPath'),那么您最终可能会得到一个默认的文件系统集到具有Kerberos身份验证的HDFS!如果缺少实际的conf文件,Hadoop客户端将恢复为硬编码的默认设置,即本地文件系统和无Kerberos。 –

+0

@SamsonScharfrichter这是一个非常有用的笔记。我们在windows上使用intellij获得大多数开发人员的Kerberos认证失败,但我的Mac/OSX工作方式不知如何。真正奇怪的是,Windows机器在Gradle /命令行中运行相同的测试。希望你提供的这些信息能帮助我追踪这个问题。再次感谢。 –

+0

@ 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动态链接库的默认位置) –

通过你的代码时,为什么星火寻找Kerberos的所有你需要运行从JUnit中,来自的IntelliJ没有特别星火,你可以尝试像https://github.com/sleberknight/sparkjava-testing