如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?

Posted

技术标签:

【中文标题】如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?【英文标题】:How to convert BigQuery SQL query result to Spark DataFrame? 【发布时间】:2019-11-19 04:41:57 【问题描述】:

从官方文档中可以看出,它先将表加载到Spark DataFrame中,然后使用.sql()进行查询。

words = spark.read.format('bigquery') \
  .option('table', 'bigquery-public-data:samples.shakespeare') \
  .load()
words.createOrReplaceTempView('words')

# Perform word count.
word_count = spark.sql(
    'SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word')
word_count.show()
word_count.printSchema()

我可以通过根据查询结果加载表来做类似的事情吗?这是我将 BigQuery 结果加载到 Pandas DataFrame 的代码。

sql_query = 'Some Queries'
credentials, project = google.auth.default(scopes=[
        'https://www.googleapis.com/auth/drive',
        'https://www.googleapis.com/auth/bigquery',
    ])
client = bigquery.Client(credentials=credentials, project=project)
df = client.query(sql_query).to_dataframe()

我知道我们可以将 Pandas DataFrame 转换为 Spark DataFrame。我正在寻找一种更清洁、更快捷的方式。

【问题讨论】:

【参考方案1】:

spark-bigquery-connector 依赖于 BigQuery 存储 API,该 API 直接从表的文件中读取数据并允许分发读取数据。 BigQuery 客户端在单个线程中读取结果的全部内容。

但是,您可以使用从 0.10.0-beta 版开始添加到连接器的视图支持,方法是首先使用 SQL 查询创建视图,然后将视图直接读取到数据框。

【讨论】:

以上是关于如何将 BigQuery SQL 查询结果转换为 Spark DataFrame?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 bigquery 返回的结果转换为 Json

如何将我的 Bigquery 查询转换为 AWS Athena 查询?

无法将 BigQuery 旧版 SQL 转换为 HAVING LEFT(...) 的标准 SQL

无法在 Google BigQuery 中将此旧版 SQL 转换为标准 SQL

如何使用 Python 将 bigquery 返回的结果转换为 Json 格式?

如何将旧版 SQL BigQuery 转换为标准 SQL?