通过Spark使用BigQuery Storage API:请求多个分区,但仅获得1个

我正在使用bigquery-spark-connector读取使用BigQuery Storage API的BigQuer。我的脚本(自动)从BigQuery Storage API请求多个分区,但收到警告:

WARN com.google.cloud.spark.bigquery.direct.DirectBigQueryRelation:请求了2个分区,但仅从BigQuery Storage API接收了1个分区

Spark作业花费很长时间,我认为这是因为它没有读取多个分区。如何确保BigQuery Storage API可以为我提供所有需要的分区?这里发生了什么,为什么无论我请求多少,它都只给我一个分区?

首先,我创建一个SparkSession:

SparkSession spark = SparkSession.builder()
.appName("XXX")
.getOrCreate();

这是引起警告的代码:

Dataset<Row> data = spark.read()
.format("bigquery")
.option("table","project.dataset.table")
.load()
.cache();
baobeicuijina 回答:通过Spark使用BigQuery Storage API:请求多个分区,但仅获得1个

当从BigQuery存储API请求分区时,spark-bigquery-connector使用一些启发式方法进行询问。返回的分区是BigQuery使用的实际分区,可能会低于启发式方法的预期。这是正常情况,因此对于这种情况,警告可能太严重了(我已经与BigQuery小组进行了讨论)。有关更多上下文,请阅读requestedStreams参数here的描述。

第二个问题是Spark作业需要很长时间。如果增加资源-特别是执行程序的数量无济于事,请在spark-bigquery-connector project中打开一个错误,其中包含实际的流ID和其余的spark配置,以便连接器和BoigQuery团队可以检查出来。

本文链接:https://www.f2er.com/3137844.html

大家都在问