Google Cloud Dataflow BigQueryIO.Read空指针错误

时间:2017-01-30 18:05:30

标签: google-cloud-dataflow

我有一个流媒体工作,我在其中收听来自PubSub的消息,之后从BigQuery读取数据。使用从PubSUb收到的数据查询数据。这意味着我需要动态地形成查询,然后将其传递给BigQueryIO.Read.fromQuery()函数。下面是将从BigQuery读取数据并返回TableRow的代码,但是它给了我NullPointerException,其中我的代码正在执行要读取的数据。

public class RequestDailyUsageTransform extends PTransform<PCollection<DailyUsageJob>, PCollection<TableRow>> {

    private String mQuery;

    private String mForDate;
    private LocalDateTime billingDateTime;

    @Override
    public PCollection<TableRow> apply(PCollection<DailyUsageJob> input) {

        TableReference tableReference = getRequestTableReference();

        return input
                .apply(ParDo.named("RequestUsageQuery")
                        .of(new RequestUsageQueryStringDoFn()))
                .apply(BigQueryIO.Read.named("RequestUsageReader")
                        .fromQuery(mQuery)
                        .from(tableReference).withoutValidation())
                .apply(ParDo.named("DailyRequestMapper").of(new DailyRequestMapperDoFn()))
                .apply(ParDo.named("BillDailyRequestUsage")
                        .of(new DailyRequestsBillDoFn(mForDate, billingDateTime)));
    }}

我还想知道如何传递在BigQueryIO.Read.fromQuery()函数中的DoFn中生成的字符串。

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下,最好的办法是运行查询所有数据的每日批处理作业,并由userid键入。这将提取比您想要的更多的数据,但允许您找到每用户信息。不幸的是,目前没有办法执行数据相关读取