Niel Markwick created BEAM-7732:
-----------------------------------

             Summary: Allow access to SpannerOptions in Beam
                 Key: BEAM-7732
                 URL: https://issues.apache.org/jira/browse/BEAM-7732
             Project: Beam
          Issue Type: Improvement
          Components: io-java-gcp
    Affects Versions: 2.13.0, 2.12.0
            Reporter: Niel Markwick



Beam hides the 
[SpannerOptions|https://github.com/googleapis/google-cloud-java/blob/master/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java]
 object behind a 
[SpannerConfig|https://github.com/apache/beam/blob/master/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerConfig.java]
 object because the SpannerOptions object is not serializable. 

This means that the only options that can be set are those that can be 
specified in SpannerConfig - limited to host, project, instance, database.

Suggestion: add the possibility to set a SpannerOptionsFactory in SpannerConfig:
{code:java}
public interface SpannerOptionsFactory extends Serializable {
   public SpannerOptions create();
}
{code}
This would allow the user use this factory class to specify custom 
SpannerOptions before they are passed onto the connectToSpanner() method; 

connectToSpanner() would then become: 


{code:java}
public SpannerAccessor connectToSpanner() {
  
  SpannerOptions.Builder builder = spannerOptionsFactory.create().toBuilder();
  // rest of connectToSpanner follows, setting project, host, etc.
{code}





 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to