Как интегрировать доступ HIVE в PySpark, полученный из pip и conda (не из дистрибутива Spark или пакета)

Я строю и программно использую свой PySpark окружающая среда с нуля через conda а также pip pyspark (как я демонстрирую здесь); а не использовать PySpark из загружаемого дистрибутива Spark. Как вы можете видеть в первом фрагменте кода URL-адреса выше, я выполняю это посредством (среди прочего) k / v conf-пар в моем скрипте запуска SparkSession. (Кстати, этот подход позволяет мне работать в различных REPL, IDE и JUPYTER).

Однако в отношении настройки поддержки Spark для доступа к базам данных и хранилищам метаданных HIVE в руководстве говорится следующее:

Конфигурация Hive делается путем размещения вашего hive-site.xml, core-site.xml (для настройки безопасности) и hdfs-site.xml (для конфигурации HDFS) файл в conf/,

От conf/ выше они означают conf/ каталог в дистрибутиве Spark. Но pyspark с помощью pip а также conda Разумеется, такого каталога нет, так как в таком случае можно подключить базу данных HIVE и поддержку метастазов к Spark?

Я подозреваю, что это может быть выполнено специально префиксированными парами SparkConf K/V в форме: spark.hadoop.* (см. здесь); и если да, мне все равно нужно определить, какие директивы HADOOP / HIVE / CORE необходимы. Я думаю, я буду пробовать и ошибаться.:)

Примечание: .enableHiveSupport() уже был включен.

Я буду возиться с spark.hadoop.* K / V пары, но если кто-нибудь знает, как это делается не по порядку, пожалуйста, дайте мне знать.

Спасибо.:)

РЕДАКТИРОВАТЬ: После того, как решение было предоставлено, я обновил содержимое в первом URL выше. Теперь он объединяет SPARK_CONF_DIR а также HADOOP_CONF_DIR Подход переменной среды обсуждается ниже.

1 ответ

Решение

В этом случае я бы рекомендовал официальное руководство по настройке (выделено мое):

Если вы планируете читать и писать из HDFS с помощью Spark, в путь к классу Spark следует включить два файла конфигурации Hadoop:

  • hdfs-site.xml, который обеспечивает поведение по умолчанию для клиента HDFS.
  • core-site.xml, который устанавливает имя файловой системы по умолчанию.

(...)

Чтобы сделать эти файлы видимыми для Spark, установите HADOOP_CONF_DIRв$SPARK_HOME/conf/spark-env.sh в местоположение, содержащее файлы конфигурации.

Дополнительно:

Чтобы указать другой каталог конфигурации, отличный от стандартного "SPARK_HOME/conf”, Вы можете установитьSPARK_CONF_DIR, Spark будет использовать файлы конфигурации (spark-defaults.conf, spark-env.sh, log4j.properties и т. Д.) Из этого каталога.

Таким образом, можно использовать произвольный каталог, доступный для вашей установки Spark, для размещения желаемых файлов конфигурации, и SPARK_CONF_DIRи / илиHADOOP_CONF_DIRможет быть легко установлен прямо в вашем скрипте, используяos.environ,

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

Другие вопросы по тегам