У меня есть несколько тестовых случаев, таких как чтение / запись файла в HDFS, которые я хочу автоматизировать с помощью Scala и запустить с помощью maven. Я взял конфигурационные файлы Hadoop тестовой среды и поместил их в каталог ресурсов моего проекта maven. Проект также работает на желаемом кластере из любого кластера, с которого я запускаю проект.
Одна вещь, которую я не получаю, это то, как Spark берет конфигурации Hadoop из каталога ресурсов, даже если я не указал это нигде в проекте. Ниже приведен фрагмент кода проекта.
def getSparkContext(hadoopConfiguration: Configuration): SparkContext ={
val conf = new SparkConf().setAppName("SparkTest").setMaster("local")
val hdfsCoreSitePath = new Path("/etc/hadoop/conf/core-site.xml","core-site.xml")
val hdfsHDFSSitePath = new Path("/etc/hadoop/conf/hdfs-site.xml","hdfs-site.xml")
val hdfsYarnSitePath = new Path("/etc/hadoop/conf/yarn-site.xml","yarn-site.xml")
val hdfsMapredSitePath = new Path("/etc/hadoop/conf/mapred-site.xml","mapred-site.xml")
hadoopConfiguration.addResource(hdfsCoreSitePath)
hadoopConfiguration.addResource(hdfsHDFSSitePath)
hadoopConfiguration.addResource(hdfsYarnSitePath)
hadoopConfiguration.addResource(hdfsMapredSitePath)
hadoopConfiguration.set("hadoop.security.authentication", "Kerberos")
UserGroupInformation.setConfiguration(hadoopConfiguration)
UserGroupInformation.loginUserFromKeytab("alice", "/etc/security/keytab/alice.keytab")
println("-----------------Logged-in via keytab---------------------")
FileSystem.get(hadoopConfiguration)
val sc=new SparkContext(conf)
return sc
}
@Test
def testCase(): Unit = {
var hadoopConfiguration: Configuration = new Configuration()
val sc=getSparkContext(hadoopConfiguration)
//rest of the code
//...
//...
}
Здесь я использовал hadoopconfiguration
объект, но я нигде не указываю это для sparkContext
, так как это будет запускать тесты на кластере, который я использую для запуска проекта, а не в какой-то удаленной тестовой среде.
Если это не правильный путь? Может кто-нибудь объяснить, как я должен выполнить свой мотив запуска тестовых сценариев искры в тестовой среде из какого-то удаленного кластера?