将'dryRun'设置为true时,BigQuery客户端库会抛出NPE

时间:2017-01-12 04:11:32

标签: java nullpointerexception google-bigquery

根据BigQuery APIdryRun字段的文档,当设置为true时,查询将不会被执行,而是会验证它并返回一些基本统计信息:

  

[可选]如果设置为true,则BigQuery不会运行该作业。相反,如果   查询有效,BigQuery返回有关作业的统计信息,如   将处理多少字节。如果查询无效,则会出错   回报。默认值为false。

enter image description here

但是,使用Java client lib for BigQuery并将dryRun设置为true会抛出NullPointerException:

[...] 
JobConfiguration jobConfiguration = newBuilder(query)
                            .setAllowLargeResults(true)
                            .setUseLegacySql(false)
                            .setDryRun(true)
                            .setDestinationTable(TableId.of("<project>", "<dataset>", "<table>"))
                            .setCreateDisposition(CREATE_IF_NEEDED)
                            .setWriteDisposition(WRITE_TRUNCATE)
                            .setPriority(INTERACTIVE)
                            .build();

                    JobInfo jobInfo = JobInfo.of(jobConfiguration);
                    Job job = bigQuery.create(jobInfo);
[...]

JobConfiguration LN 140中的例外:

Exception in thread "main" java.lang.NullPointerException
    at com.google.cloud.bigquery.JobConfiguration.fromPb(JobConfiguration.java:140)
    at com.google.cloud.bigquery.JobInfo$BuilderImpl.<init>(JobInfo.java:182)
    at com.google.cloud.bigquery.Job.fromPb(Job.java:324)
    at com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:229)

这是Java客户端库中的错误,还是我正在使用/错误使用它?

注意:将其设置为false按预期工作。

Note2 jobConfigurationjobInfo都已初始化,即不是null

enter image description here

1 个答案:

答案 0 :(得分:0)

这是客户端库中的一个错误。这是GitHub中的问题。

https://github.com/GoogleCloudPlatform/google-cloud-java/issues/525