misco
misco

Reputation: 1952

Error on inserting data to BigQuery table

I want to insert some row to BigQuery table throught REST API, but it fails with general exception. I don't know what is the wrong in my code. When I try to insert row with REST client from Chrome browser, it's passed.

        final HttpTransport TRANSPORT = new NetHttpTransport();
        final JsonFactory JSON_FACTORY = new JacksonFactory();

        HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

        // Build service account credential.
        GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
                .setJsonFactory(jsonFactory)
                .setServiceAccountId("foo")
                .setServiceAccountScopes(Collections.singleton(BigqueryScopes.BIGQUERY))
                .setServiceAccountPrivateKeyFromP12File(new File(Main.class.getClassLoader().getResource("foo").getFile()))
                .build();

        Bigquery service = new Bigquery.Builder(httpTransport, jsonFactory, credential)
                        .setApplicationName("BigQuery Samples").build();

        Bigquery.Projects.List projectListRequest = service.projects().list();

        TableDataInsertAllRequest.Rows data = new TableDataInsertAllRequest.Rows();
//      data.setInsertId("");

        Map<String, Object> json = new HashMap<>();

        json.put("from", "A");
        json.put("to", "B");


        TableDataInsertAllRequest.Rows row = new TableDataInsertAllRequest.Rows();
        row.setJson(json);

        List<TableDataInsertAllRequest.Rows> rows = new ArrayList<>();
        rows.add(row);

        TableDataInsertAllRequest requestData = new TableDataInsertAllRequest();
        requestData.setSkipInvalidRows(true);
        requestData.setIgnoreUnknownValues(true);
        requestData.setKind("bigquery#tableDataInsertAllRequest");
        requestData.setRows(rows);

        try {
            TableDataInsertAllResponse response = service.tabledata().insertAll("myDatastore "myProject", "test", requestData).execute();
            System.out.println(response);
        } catch (GoogleJsonResponseException e) {
            e.printStackTrace();
        }

The request sent with REST client on URL https://www.googleapis.com/bigquery/v2/projects/myProject/datasets/myDatastore/tables/test/insertAll

{
  "kind": "bigquery#tableDataInsertAllRequest",
  "skipInvalidRows": true,
  "ignoreUnknownValues": true,
  "rows": [
    {
      "json": {
        "from": "VIE",
        "to": "FRA"
      }
    }
  ]
}

The exception from REST API called from Java.

com.google.api.client.googleapis.json.GoogleJsonResponseException: 503 Service Unavailable
{
  "code" : 503,
  "errors" : [ {
    "domain" : "global",
    "message" : "Error encountered during execution. Retrying may solve the problem.",
    "reason" : "backendError"
  } ],
  "message" : "Error encountered during execution. Retrying may solve the problem."
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1056)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
    at com.example.Main.main(Main.java:97)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Upvotes: 1

Views: 1060

Answers (1)

misco
misco

Reputation: 1952

This code is working. The problem was on server side and it was resolved after more hours automatically. Maybe it will be useful for someone.

Upvotes: 1

Related Questions