public void validate() { checkNotNull( getInstanceId(), "SpannerIO.read() requires instance id to be set with withInstanceId method"); checkNotNull( getDatabaseId(), "SpannerIO.read() requires database id to be set with withDatabaseId method"); }
@ProcessElement public void processElement(ProcessContext c) { String instanceId = spannerConfig.getInstanceId().get(); String dbId = spannerConfig.getDatabaseId().get(); // For direct runner or tests we need a deterministic jobId. String testJobId = ExportTransform.this.testJobId.get(); if (!Strings.isNullOrEmpty(testJobId)) { c.output(testJobId); return; } try { DataflowWorkerHarnessOptions workerHarnessOptions = c.getPipelineOptions().as(DataflowWorkerHarnessOptions.class); String jobId = workerHarnessOptions.getJobId(); c.output(instanceId + "-" + dbId + "-" + jobId); } catch (Exception e) { throw new IllegalStateException( "Please specify --testJobId to run with non-dataflow runner"); } } }))
@ProcessElement public void processElement(ProcessContext c) { Ddl ddl = c.element(); DatabaseAdminClient databaseAdminClient = spannerAccessor.getDatabaseAdminClient(); List<String> createIndexStatements = ddl.createIndexStatements(); if (!createIndexStatements.isEmpty()) { // This just kicks off the index creation, it does not wait for it to complete. Operation<Void, UpdateDatabaseDdlMetadata> op = databaseAdminClient.updateDatabaseDdl( spannerConfig.getInstanceId().get(), spannerConfig.getDatabaseId().get(), createIndexStatements, null); if (waitForIndexes.get()) { op.waitFor(); } } } }));
public void populateDisplayData(DisplayData.Builder builder) { builder .addIfNotNull(DisplayData.item("projectId", getProjectId()).withLabel("Output Project")) .addIfNotNull(DisplayData.item("instanceId", getInstanceId()).withLabel("Output Instance")) .addIfNotNull(DisplayData.item("databaseId", getDatabaseId()).withLabel("Output Database")); if (getServiceFactory() != null) { builder.addIfNotNull( DisplayData.item("serviceFactory", getServiceFactory().getClass().getName()) .withLabel("Service Factory")); } }
spannerConfig.getInstanceId().get(), spannerConfig.getDatabaseId().get(), newDdl.createTableStatements(),
public SpannerAccessor connectToSpanner() { SpannerOptions.Builder builder = SpannerOptions.newBuilder(); if (getProjectId() != null) { builder.setProjectId(getProjectId().get()); } if (getServiceFactory() != null) { builder.setServiceFactory(this.getServiceFactory()); } if (getHost() != null) { builder.setHost(getHost().get()); } String userAgentString = USER_AGENT_PREFIX + "/" + ReleaseInfo.getReleaseInfo().getVersion(); builder.setHeaderProvider(FixedHeaderProvider.create("user-agent", userAgentString)); SpannerOptions options = builder.build(); Spanner spanner = options.getService(); DatabaseClient databaseClient = spanner.getDatabaseClient( DatabaseId.of(options.getProjectId(), getInstanceId().get(), getDatabaseId().get())); BatchClient batchClient = spanner.getBatchClient( DatabaseId.of(options.getProjectId(), getInstanceId().get(), getDatabaseId().get())); DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); return new SpannerAccessor(spanner, databaseClient, databaseAdminClient, batchClient); } }