Scala 如何从IntelliJ(或其他IDE)运行Spark测试
我正在尝试为一些Spark代码创建一个测试。获取SparkSession对象时,以下代码失败。注意:从cli:gradle my_module:build运行时,测试运行正常Scala 如何从IntelliJ(或其他IDE)运行Spark测试,scala,apache-spark,intellij-idea,gradle,kerberos,Scala,Apache Spark,Intellij Idea,Gradle,Kerberos,我正在尝试为一些Spark代码创建一个测试。获取SparkSession对象时,以下代码失败。注意:从cli:gradle my_module:build运行时,测试运行正常 @Test def myTest(): Unit = { val spark = SparkSession.builder().master("local[2]").getOrCreate() ... } 错误: java.lang.IllegalArgumentException: Can't get Kerb
@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+Gradle+Mac OS
问题:
- 如何从IntelliJ内部运行火花测试
- 为什么Spark在运行“本地”时要寻找Kerberos
配置
;如果Hadoop客户端在类路径中找到有效的core site.xml
(取决于Hadoop\u HOME
和/或Hadoop\u CONF\u DIR
和/或spark.driver.extraClassPath
),那么您可能会使用Kerberos身份验证将默认文件系统设置为HDFS!由于缺少实际的conf文件,Hadoop客户端将恢复到硬编码的默认值,即本地文件系统和无Kerberos。@SamsonScharfrichter这是一个非常有用的说明。对于大多数在windows上使用intellij的开发人员,我们都会遇到kerberos身份验证失败,但我的身份验证在mac/osx上也能正常工作。真正奇怪的是windows机器在gradle/命令行上运行相同的测试。希望你提供的这些信息能帮助我追踪这个问题。再次感谢。@Lo Tan>如果这是一个Windows特定的问题,并且您看到有关本机库的警告,那么将java.library.path
设置为%HADOOP\u HOME%\bin
可以作为一种解决方法,或者至少可以导致一个更有意义的异常。请记住,路径是Windows查找DLL的默认位置(就像LD_LIBRARY_PATH是Linux查找的默认位置一样。因此,动态链接libs)