使用Java将数据从Google Cloud Storage加载到BigQuery

时间:2013-05-29 10:12:41

标签: google-app-engine google-bigquery google-cloud-storage

我想将数据从Google云端存储上传到Big Query中的表格。 有我的代码来创建工作:

    Job job = new Job();
    JobConfiguration config = new JobConfiguration();
    JobConfigurationLoad loadConfig = new JobConfigurationLoad();

    List<String> sources = new ArrayList<String>();
    sources.add("gs://bucket/file.cvs");
    loadConfig.setSourceUris(sources);

    TableReference tableRef = new TableReference();
    tableRef.setDatasetId("DATASET_ID");
    tableRef.setTableId(TABLE_ID);
    tableRef.setProjectId(PROJECT_ID);
    loadConfig.setDestinationTable(tableRef);

    List<TableFieldSchema> fields = FieldsBigQuery.schema();

    TableSchema schema = new TableSchema();
    schema.setFields(fields);

    loadConfig.setSchema(schema);
    config.setLoad(loadConfig);
    job.setConfiguration(config);

    Insert insert = _bigquery.jobs().insert(PROJECT_ID, job);
    insert.setProjectId(PROJECT_ID);
    JobReference jobRef =  insert.execute().getJobReference();

我没有任何错误或异常,但它没有将任何数据上传到我的表中(表大小为0B)。我尝试创建没有任何数据的表,而不是将数据上传到此表,但事实并非如此。

我将不胜感激,

非常感谢!

1 个答案:

答案 0 :(得分:1)

请记住使用以下方法检查作业状态:

JobStatus status =
    _bigquery.jobs().get(PROJECT_ID, jobRef.getJobId()).execute().getStatus();
System.out.println(status.toPrettyString());

如果一切正常,工作状态可能是PENDING或RUNNING,并且您必须等到它完成。或者,您将能够阅读原因和信息,说明为什么它无法运行。