Java: модульное тестирование операций чтения / записи HDFS с использованием искрового фрейма данных - PullRequest
0 голосов
/ 17 июня 2019

Я пишу / читаю spark dataframes в удаленный кластер hdfs в Linux.

dataFrame.select("col1", "col2", "col3").writeAsCSV("hdfs://localhost:8005//csvFile");
Assert.assertEquals(ERROR_MESSAGE, "No match", dataFrame.first().getString(5));

Если удаленный кластер искры недоступен, код переключается на локальную искру.Точно так же есть ли способ mock hdfs экземпляр?Я использую код на windows.Я не хочу, чтобы модульный тест требовал установки файлов hdf на каждую машину, на которой он запущен.

Я пробовал этот учебник для «тестирования искровых модулей с использованием hdfs».Он использует файловую систему для операций чтения-записи.Я пробовал эту настройку для мини-кластера:

conf = new HdfsConfiguration();
File baseDir = new File("target/hdfs/").getAbsoluteFile();
FileUtil.fullyDelete(baseDir);
conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, baseDir.getAbsolutePath());
cluster = new MiniDFSCluster.Builder(conf).nameNodePort(8005).build();

Это не дает никакой ошибки при записи, но говорит, что путь не существует при попытке чтения.

Dataset<org.apache.spark.sql.Row> df = SparkSession.active().read()
            .option("mode", "DROPMALFORMED")
            .schema(schema)
            .csv("hdfs://localhost:8005//csvFile");

Примечание: Используемые версии: spark (2.4.2), scala (2.12), hadoop-minicluster (3.2.0 или 2.6.5)

Может кто-нибудь предложить что-то подобное для работы с фреймами данных?

...