Как интегрировать доступ 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.*
префикс.