Интерактивный сеанс pyspark запущен непосредственно на ошибках кластера GCP dataproc о таблице по умолчанию HIVE - PullRequest
0 голосов
/ 23 января 2019

С помощью pyspark на GCP я иногда получаю сообщения типа

AnalysisException: "Database 'default' not found;"

Из проведенного мною исследования я понимаю, что это относится к таблицам улья. Может быть, я должен явно указать спарку, где находится файл hive.xml. Я вижу, у меня есть этот файл

./etc/hive/conf.dist/hive-site.xml

и некоторые другие важные файлы:

./usr/local/share/google/dataproc/bdutil/conf/hive-template.xml
./usr/local/share/google/dataproc/bdutil/conf/hive-ha-mixins.xml
./etc/hive-hcatalog/conf.dist/proto-hive-site.xml

Я вхожу в pyspark так же, как и в AWS. Я подключаюсь к кластеру и создаю собственную команду spark-submit. Это начинается как

 export PYTHONPATH=/path/to/my/stuff:$PYTHONPATH
 export PYSPARK_PYTHON=/usr/bin/python3
 export PYSPARK_DRIVER_PYTHON=/usr/local/bin/ipython3
 pyspark --class main --master yarn --deploy-mode client  --conf spark.speculation=True

то есть я создаю интерактивный сеанс pyspark с ipython непосредственно на главном узле кластера dataproc.

У меня нет специальных опций по включению улья или его поиску. Я не использую hive явно, я просто читаю паркетные файлы, и все мои SQL-запросы выполняются через интерфейс pyspark, например

df = spark.read.parquet('gs://path/to/my/data')
df.groupBy('something').count().show()

Это неправильный способ создания интерактивного сеанса pyspark в кластере dataproc? Я нашел документацию, например https://cloud.google.com/sdk/gcloud/reference/dataproc/jobs/submit/pyspark, в которой рассказывается, как отправлять задания с вашего ноутбука, но я ничего не видел о запуске интерактивного сеанса в кластере. Я беспокоюсь, что gcloud dataproc jobs submit pyspark добавляет специальные опции и настройки, которые мне не хватает.

1 Ответ

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

+ 1 для использования ноутбука, а не спарк-оболочки. Многие из действий инициализации перешли на дополнительные компоненты, которые устанавливаются быстрее:

Если вы используете --image-version=preview (что в конечном итоге будет --image-version=1.4), вы получите Python 3 и conda / pip по умолчанию. Таким образом, вам не нужно запускать скрипты для настройки Python 3.

Установка Anaconda через --optional-components ANACONDA также удобна, поскольку поставляется с множеством распространенных пакетов данных.

Просто обратите внимание, что настройка туннеля SSH для просмотра веб-интерфейса немного сложна. Вот документация этого документа:

# Terminal 1: Run an SSH tunnel on port 1080
gcloud compute ssh clustername-m -- -nND 1080

# Terminal 2: Run Chrome (on Linux -- the command is different for a Mac) using the proxy on port 1080. Make sure you don't have any corporate proxy settings that might interfere with using the proxy on 1080.
/usr/bin/google-chrome --proxy-server="socks5://localhost:1080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/master-host-name

Возвращаясь к вашему первоначальному вопросу: мы настраиваем путь к классу Spark для включения конфигурации Hive (см. /etc/spark/conf/spark-env.sh). Таким образом, команды pyspark, spark-shell и spark-submit уже должны быть правильно настроены без каких-либо аргументов. Вставленные вами фрагменты кода на самом деле не касаются Hive (иначе вы не читаете и не пишете таблицы Hive), поэтому я не уверен, почему вы нажимаете это сообщение об ошибке.

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