Невозможно загрузить application.properties на банку Hadoop (NullPointerException) - PullRequest
0 голосов
/ 08 апреля 2019

Я посмотрел на все виды ответов на эту проблему. Никто из них не работает.

У меня есть следующий код:

import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ApplicationConfig {

    private static Logger LOG;

    private String appConfigFileLocation = "application.properties"; 
    private Properties appConfig;

    private static ApplicationConfig instance;

    public static ApplicationConfig getInstance() {
        if(instance == null) {
            instance = new ApplicationConfig();
        }

        return instance;
    } 

    private ApplicationConfig() {
        LOG = LoggerFactory.getLogger(this.getClass().getSimpleName());

        appConfig = new Properties();

        try {
            LOG.info("Reading config from " + appConfigFileLocation);

            appConfig.load(ClassLoader.getSystemResourceAsStream(appConfigFileLocation));

            LOG.info("Done reading config from " + appConfigFileLocation);
        } catch (FileNotFoundException e) {
            LOG.error("Encountered FileNotFoundException while reading configuration: " + e.getMessage());
            throw new RuntimeException(e);
        } catch (IOException e) {
            LOG.error("Encountered IOException while reading configuration: " + e.getMessage());
            throw new RuntimeException(e);
        }
    }
}

Я создал файл JAR. Файл JAR имеет application.properties в корне. Я также скопировал файл application.properties в /etc/hadoop/conf и в каталог target/classes/.

Я использую команду hadoop jar для выполнения кода.

Но я продолжаю получать сообщение об ошибке: java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:434)

Пожалуйста, помогите мне решить эту расстраивающую ошибку!

1 Ответ

0 голосов
/ 09 апреля 2019

Обнаружена ошибка.

hadoop jar проверяет в пути к классам Hadoop.Несмотря на то, что файл находился в пути к классам Hadoop, у него не было разрешений на чтение от пользователя Hadoop.

Простой sudo chmod a+r /etc/hadoop/conf/application.properties добился цели!

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