如何将 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?的主要内容,如果未能解决你的问题,请参考以下文章