Spark не использует правильную конфигурацию из core-site.xml - PullRequest
1 голос
/ 25 июня 2019

Когда я пытаюсь прочитать файл паркета из указанного места, например / test, с помощью spark.read.parquet (), я получаю сообщение об ошибке file: // test не существует.Когда я добавляю core-site.xml в качестве ресурса в коде с

sc.hadoopConfiguration.addResource(new Path(<path-to-core-site.xml>))

, он выглядит в hdfs.Однако я не хочу добавлять ресурс в коде.Мой вопрос: как мне убедиться, что spark читает core-site.xml и использует hdfs в качестве файловой системы по умолчанию.

Я установил сервер Ubuntu 18.04.2LTS с hadoop 3, spark 2.4.2 и yarnкак менеджер ресурсов в виртуальной машине.Я настроил файл core-site.xml с fs.defaultFS, для которого задано значение hdfs: // localhost: 9000.Я также настроил HADOOP_CONF_DIR в файле bash.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Пара вариантов
1. Убедитесь, что core-site.xml доступен в classpath драйвера.Таким образом, файл core-site.xml будет загружен автоматически.
2. Если требуется только установка uri для файловой системы по умолчанию, мы можем установить это в spark-defaults.conf или в SparkConf объекте, созданном для приложения, используя spark.hadoop.fs.defaultFS и установите его значение на hdfs:///

0 голосов
/ 25 июня 2019

Ну, это общий вопрос со многими возможными ответами.Я постараюсь ответить как можно лучше: https://spark.apache.org/docs/latest/configuration.html#inheriting-hadoop-cluster-configuration Это объяснено в ссылке, вы можете установить переменную окружения HADOOP_CONF_DIR в каталог, содержащий core-site.xml, и до тех пор, пока вы не переопределите его в spark-env.sh или что-то, что должно работать.

Кстати, вы уверены, что сделали экспорт на HADOOP_CONF_DIR, потому что по своему опыту я знаю, что он работает с Spark 2.4.2, поэтому, если вы считаете, что основной сайт не загружен,возможно, потому что вы не определили переменную правильно или, возможно, ваш spark-env.sh маскирует ваше предыдущее определение.

...