[英]Cache not enabled when querying BigQuery view using Spark BigQuery connector
我正在使用 Spark BigQuery 连接器从 Dataproc 集群查询表和视图,我看到在请求视图时未使用缓存,连接器为每个读取的视图创建一个新的临时表:
df = spark.read.format('bigquery').option('table', view_name).option('viewsEnabled', 'true').load()
当我从表中读取时不是这样,使用了这里的缓存:
df = spark.read.format('bigquery').option('table', table).load()
谢谢
如果连接器创建了一个新的临时表,这意味着您没有该表的缓存结果,因为您没有对其运行任何查询(因为它是新的并且是在那个时候创建的),或者它是一个使用可能属于以下第 3 点的情况。
但是,在以下异常列表之前和之外已经创建的表或查询的外部表都可以
查询缓存的例外情况
不缓存查询结果:
- 在作业配置中指定目标表时,Cloud Console、bq 命令行工具或 API
- 如果任何引用的表或逻辑视图自结果先前缓存后发生更改
- 当查询引用的任何表最近收到流式插入(流式缓冲区附加到表)时,即使没有新行到达
- 如果查询使用非确定性函数; 例如,CURRENT_TIMESTAMP() 和 NOW() 等日期和时间函数以及 CURRENT_USER() 等其他函数会根据执行查询的时间返回不同的值
- 如果您使用通配符查询多个表
- 如果缓存的结果已经过期; 典型的缓存生命周期为 24 小时,但缓存的结果是尽力而为的,可能会更快失效
- 如果查询针对外部数据源运行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.