Чтение инструкций по этому репо: Соединители Google Cloud Storage и BigQuery Я выполнил приведенное ниже действие инициализации, чтобы создать новый кластер Dataproc с установленной версией соединителя Google Cloud Storage и BigQuery:
gcloud beta dataproc clusters create christos-test \
--region europe-west1 \
--subnet <a subnet zone> \
--optional-components=ANACONDA,JUPYTER \
--enable-component-gateway \
--initialization-actions gs://<bucket-name>/init-scripts/v.0.0.1/connectors.sh \
--metadata gcs-connector-version=1.9.16 \
--metadata bigquery-connector-version=0.13.16 \
--zone europe-west1-b \
--master-machine-type n1-standard-4 \
--worker-boot-disk-size 500 \
--image=<an-image> \
--project=<a-project-id> \
--service-account=composer-dev@vf-eng-ca-nonlive.iam.gserviceaccount.com \
--no-address \
--max-age=5h \
--max-idle=1h \
--labels=<owner>=christos,<team>=group \
--tags=allow-internal-dataproc-dev,allow-ssh-from-management-zone,allow-ssh-from-management-zone2 \
- properties = core: fs.gs.implicit.dir.repair.enable = false
Как вы должны видеть, мне пришлось добавить внешние зависимости в корзинумой собственный под: gs://init-dependencies-big-20824/init-scripts/v.0.0.1/connectors.sh
. В соответствии с инструкциями Скипа (я имею в виду скрипт connector.sh
), мне также пришлось добавить следующие jar в этот контейнер:
- gcs-connector-hadoop2-1.9.16.jar
- gcs-connector-1.7.0-hadoop2.jar
- gcs-connector-1.8.0-hadoop2.jar
- bigquery-connector-hadoop2-0.13.16.jar
Скрипт работает нормально и кластер успешно создан. Однако использование ноутбука PySpark
через Jupyter
все равно приводит к исключению BigQuery
«класс не найден». То же самое происходит, когда я запускаю PySpark
прямо из терминала. Единственный способ избежать этого исключения - скопировать еще один jar
(на этот раз spark-bigquery_2.11-0.8.1-beta-shaded.jar
) в мастер-узел моего кластера и запустить PySpark
с:
pyspark --jars spark-bigquery_2.11-0.8.1-beta-shaded.jar
Очевидно, это бьетцель.
Что я делаю не так? Я думал об изменении сценария connector.sh
для включения другой функции copy
, поэтому скопируйте spark-bigquery_2.11-0.8.1-beta-shaded.jar
в /usr/lib/hadoop/lib
, поэтому я попытался просто скопировать туда jar
вручную и запустить PySpark
, но это все равно не сработало...