Испыльный блок -тест не пройдет тест Maven, но проходит в IntelliJJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Испыльный блок -тест не пройдет тест Maven, но проходит в IntelliJ

Сообщение Anonymous »

Я работаю над проектом Scala, используя Spark (с поддержкой HIVE в некоторых тестах), а также за работающими устройствами и интеграционными тестами через IntelliJ и Maven Surefire.

Код: Выделить всё

SharedSparkSession
признак (база)

Код: Выделить всё

SharedUnitTestSparkSession
(без поддержки улей, легкий)

Код: Выделить всё

SharedHiveSparkSession
(включает Hive, использует Derby Metastore)
Некоторые тесты нуждаются в поддержке HIVE (например, создание временных представлений, запуска SQL -запросов), а некоторые не делают. /> Тесты проходят при выполнении всех тестов в IntelliJ < /p>
< /li>
Test Pass на сервере Gitlab CI, вероятно, как Unix < /p>
< /li>
Тесты проваливаются при выполнении чистого теста MVN через Commandally /intellij < /p>

/> < /ul>
Ошибки - это только одно: < /p>

Код: Выделить всё

Hadoop home dir / filesystem implementation errors (HADOOP_HOME / winutils.exe issues)

Я пробовал:

Код: Выделить всё

spark.sparkContext.hadoopConfiguration
.setClass("fs.file.impl", classOf[org.apache.hadoop.fs.BareLocalFileSystem], classOf[FileSystem])
< /code>
Это устанавливается как в чертах блока, так и в Sparkhive: < /p>
trait SharedSparkSession extends BeforeAndAfterAll { this: Suite =>
@transient protected var spark: SparkSession = _

override def beforeAll(): Unit = {
super.beforeAll()

spark = SparkSession.builder()
.appName("Unit Test Session")
.master("local[*]")
.getOrCreate()

spark.sparkContext.hadoopConfiguration
.setClass("fs.file.impl", classOf[org.apache.hadoop.fs.BareLocalFileSystem], classOf[FileSystem])
}

override def afterAll(): Unit = {
if (spark != null) {
spark.stop()
spark = null
//clears active sessions also
}
super.afterAll()
}
}
< /code>
hive one установлен следующим образом: < /p>
trait SharedHiveSparkSession extends SharedSparkSession { this: Suite =>
override def beforeAll(): Unit = {
super.beforeAll()

val tempDir = java.nio.file.Files.createTempDirectory("spark_metastore").toAbsolutePath.toString
spark = SparkSession.builder()
.appName("Hive Test Session")
.master("local[*]")
.config("spark.sql.warehouse.dir", s"$tempDir/warehouse")
.config("javax.jdo.option.ConnectionURL", s"jdbc:derby:metastore_db_${UUID.randomUUID().toString};create=true")
.enableHiveSupport()
.getOrCreate()

spark.sparkContext.hadoopConfiguration
.setClass("fs.file.impl", classOf[org.apache.hadoop.fs.BareLocalFileSystem], classOf[FileSystem])
}
}

< /code>
и модульный тест выглядит следующим образом: < /p>
trait SharedUnitTestSparkSession extends SharedSparkSession { this: Suite =>
override def beforeAll(): Unit = {
super.beforeAll()

spark = SparkSession.builder()
.appName("Unit Test Spark Session")
.master("local[*]")
.getOrCreate()

spark.sparkContext.hadoopConfiguration
.setClass("fs.file.impl", classOf[org.apache.hadoop.fs.BareLocalFileSystem], classOf[FileSystem])
}
}
< /code>
Затем тест: < /p>
class MyIntegrationTest extends AnyFlatSpec with SharedHiveSparkSession {

"A Hive-backed DataFrame" should "perform test operation" in {
implicit val implicitSpark: SparkSession = spark

import spark.implicits._

val df = Seq((1, "foo"), (2, "bar")).toDF("id", "value")
df.createOrReplaceTempView("my_table")

val result = spark.sql("SELECT COUNT(*) as total FROM my_table").collect().head.getLong(0)
assert(result == 2)
}
}
Тест не выполняется с ошибками с ошибками Hadoop Home Directory, который я обходил с помощью Barelocalfilesystem реализация.
Что я ищу:

. /> < /li>
Чистые стратегии, позволяющие избежать проблем с блокировкой Derby Metastore и конфликтов конфигурации файловой системы < /p>
< /li>
< /ul>
Некоторые предложения кодов или точно определить, что мне не хватает в Maven или конфигурации в целом:) < /p>
< /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> />
maven surefire 3.2.5 < /li>
Scala 2.12 < /li>
Spark 3.4.1 < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/796 ... n-intellij
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»