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