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

Я создаю и программно использую свою среду 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, разумеется, не имеют этого каталога, так как в таком случае можно включить поддержку Spark для базы данных и метастазов HIVE?

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

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

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

Спасибо.:)

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

1 Ответ

0 голосов
/ 30 января 2019

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

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

  • 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.*.

...