如何将分区表从BigQuery读取到Spark数据帧(在PySpark中)

如何将分区表从BigQuery读取到Spark数据帧(在PySpark中),pyspark,apache-spark-sql,google-bigquery,Pyspark,Apache Spark Sql,Google Bigquery,我有一个BQ表,它是按默认的\u PARTITIONTIME分区的。我想读取它的一个分区来Spark dataframe(PySpark)。但是,spark.read API似乎无法识别分区列。下面是代码(不起作用): 分区相当大,因此我无法作为数据帧读取 非常感谢。尝试使用“$”运算符: 因此,您将从“myProject.myDataset.table$20190130”表中提取 好问题 我申请跟踪这件事 目前的一个解决方法是读取过滤器参数 df = spark.read.format('bi

我有一个BQ表,它是按默认的
\u PARTITIONTIME
分区的。我想读取它的一个分区来Spark dataframe(PySpark)。但是,spark.read API似乎无法识别分区列。下面是代码(不起作用):

分区相当大,因此我无法作为数据帧读取

非常感谢。

尝试使用“$”运算符:

因此,您将从“myProject.myDataset.table$20190130”表中提取

好问题

我申请跟踪这件事

目前的一个解决方法是读取
过滤器
参数

df = spark.read.format('bigquery').option('table', table) \
  .option('filter', "_PARTITIONTIME = '2019-01-30'")).load()

今天应该可以使用。

表中的哪个列用于分区?我想你应该在filterIt's的专栏中使用它,专栏是_PARTITIONTIME。问题是,在BQ中,它是一个隐藏列,在上面的代码中,
df
无法识别此列。我在发布此问题之前尝试过,但不起作用。错误消息片段为:
原因:com.google.cloud.spark.bigquery.repackaged.io.grpc.StatusRuntimeException:无效参数:创建会话时出错:标准SQL中不支持表装饰程序
table = 'myProject.myDataset.table'
partition = '20190130'
df = spark.read.format('bigquery').option('table', f'{table}${partition}').load()
df = spark.read.format('bigquery').option('table', table) \
  .option('filter', "_PARTITIONTIME = '2019-01-30'")).load()