Я выполняю запрос: "SELECT e.name,d.name FROM emp as e, department as d WHERE e.dept = d.dept;"
в Spanner, который прекрасно работает на консоли Spanner.Но когда я пытаюсь выполнить тот же запрос с использованием Apache Beam, он выдает ошибку:
java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: com.google.cloud.spanner.SpannerException: INVALID_ARGUMENT: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Queries with more than one DistributedUnion are currently considered not partitionable. Please view the query plan through the dev console, gcloud or using the API.
Используемый код Apache Beam:
p.apply(SpannerIO.read()
.withSpannerConfig(spannerConfig)
.withQuery("SELECT e.name,d.name FROM emp as e, department as d WHERE e.dept = d.dept;"))
.apply(ParDo.of(new DoFn<Struct,Struct>(){
private static final long serialVersionUID = 1L;
@ProcessElement
public void processElement(ProcessContext c)
{
System.out.println(c.element().toString());
}
}));
Я пыталсяпрорабатывает план выполнения запроса, но не уверен, что именно ожидается, когда то же самое отлично работает в интерфейсе или консоли Spanner.