spark-testing-base для написания тестов Java JUnit для Spark с поддержкой Hive - PullRequest
0 голосов
/ 19 октября 2018

Я использую https://github.com/holdenk/spark-testing-base для написания тестов JUnit.
Проверьте следующий код:

public class MyTestSuite extends JavaDataFrameSuiteBase implements Serializable {
    ....
    @Test
    public void oneTest() {

        ClassLoader classLoader = getClass().getClassLoader();
        File testData = new File(classLoader.getResource("testFile1.txt").getFile());
        JavaRDD<String> lines = jsc().textFile(testData.getAbsolutePath());
        ...

Я могу прочитать свои тестовые данные, содержащиеся в / src / test / resources, вСДР, позволяющий запустить mvn test .

Однако моя цель - проверить класс HiveLoader (file_location_in_hdfs, database_name, session) , который ожидает файлв HDFS в качестве входных данных и создает таблицу Hive из него в заданной базе данных.Не удается выполнить следующее:

    ....
    @Test
    public void oneTest() {
       File testData = new File(classLoader.getResource("testFile1.txt").getFile());
       HiveLoader loader = new HiveLoader(testData.getAbsolutePath(), "db_name", spark())
       ...

Исключение, которое я получаю:

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException (message: java.lang.IllegalArgumentException: невозможно создать путь из пустой строки);

Файл должен быть в HDFS.После многих попыток я нашел этот не элегантный обходной путь:

    ....
    @Test
    public void oneTest() {           
        File testData = new File(classLoader.getResource("testFile1.txt").getFile());
        JavaRDD<String> lines = jsc().textFile(testData.getAbsolutePath());
        lines.saveAsTextFile("/desired_location_in_hdfs");          

        TripleTableLoader tt_loader = new TripleTableLoader("/desired_location_in_hdfs", "db_name", spark);

По сути, я считываю файл локально в RDD и записываю его обратно в HDFS.

Есть ли лучшее решение, чтобы сделатьэтот файл доступен в HDFS, который работает на базе spark-testing?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...