Загрузка набора данных c из Google BigQuery с помощью Spark на ПК - PullRequest
1 голос
/ 03 марта 2020

Я хотел бы попросить вас о помощи. Я сам решил много задач для этой задачи, но, к сожалению, я не могу решить следующую. Мне нужно загрузить набор данных publi c (например, bigquery-publi c -data: samples.shakespeare) из Google BigQuery с использованием Spark (а именно PySpark) в мой P C. Это должно быть что-то вроде примера "HelloWorld" для меня. Я установил Spark локально в VirtualBox 6.0.10 (Ubuntu 18.04 LTS). Во-первых, я хочу показать некоторые данные из вышеупомянутой таблицы для начала. Для этого я создал следующий фрагмент кода (код находится в файле с именем spark_download_data_from_bq.py).

#!/usr/bin/python
"""BigQuery I/O PySpark example."""
from pyspark.sql import SparkSession
from google.cloud import bigquery

spark = SparkSession \
.builder \
.master('local') \
.appName('spark-bigquery-demo') \
.getOrCreate()

bucket = "gs://my-test-bucket-xxxx"
spark.conf.set('temporaryGcsBucket', bucket)

# Load data from BigQuery.
df_data = spark.read.format('bigquery') \
.option("credentialsFile", "/home/user/Downloads/test-project-xxxxxx-xxxxxxxxxxxx.json")\
.option("parentProject", "test-project-i-xxxxxx")\
.option("project", "test-project-i-xxxxxx")\
.option('table', 'bigquery-public-data:samples.shakespeare') \
.load()
df_data.createOrReplaceTempView('data')
df_data.show() 

Я запускаю его с помощью следующей команды: /home/user/Downloads/spark-2.4.0-bin-hadoop2.7/bin/spark-submit --jars /home/user/Downloads/spark-bigquery-with-dependencies_2.11-0.13.1-beta.jar /home/user/Downloads/spark_download_data_from_bq.py

К сожалению, у меня возникает следующая ошибка, и я не знаю, как ее решить:

    py4j.protocol.Py4JJavaError: An error occurred while calling o40.showString.
    : 
com.google.cloud.spark.bigquery.repackaged.com.google.api.gax.rpc.PermissionDeniedException: com.google.cloud.spark.bigquery.repackaged.io.grpc.StatusRuntimeException: PERMISSION_DENIED: request failed: the user does not have 'bigquery.readsessions.create' permission for 'projects/test-project-i-xxxxxx ...'

Я не знаю, как / где изменить свойство bigquery.readsessions.create. Не могли бы вы помочь мне? Должен ли код работать после исправления этой проблемы? У вас есть идея, как загрузить данные из BigQuery?

Большое спасибо.

A.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Вы можете добавить это разрешение в консоли GCP:

  • Go на страницу IAM (Управление идентификацией и доступом)
  • Найти пользователя вы используете, и нажмите на карандаш для редактирования на стороне
  • Нажмите ADD ANOTHER ROLE
  • В поле выбора роли выберите BigQuery Read Session User
1 голос
/ 03 марта 2020

Разрешение «bigquery.readsessions.create» используется API хранилища BigQuery. Вы можете увидеть определение разрешения здесь .

. Чтобы решить эту проблему, вы можете предоставить своей учетной записи службы bigquery.readSessionUser или bigquer.user role или создать пользовательская роль , включающая это разрешение.

...