Skip to content

Commit f3e2edc

Browse files
committed
Add mysql write to managed io
1 parent 7a09623 commit f3e2edc

5 files changed

Lines changed: 20 additions & 1 deletion

File tree

model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/external_transforms.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ message ManagedTransforms {
8282
"beam:schematransform:org.apache.beam:postgres_write:v1"];
8383
MYSQL_READ = 9 [(org.apache.beam.model.pipeline.v1.beam_urn) =
8484
"beam:schematransform:org.apache.beam:mysql_read:v1"];
85+
MYSQL_WRITE = 10 [(org.apache.beam.model.pipeline.v1.beam_urn) =
86+
"beam:schematransform:org.apache.beam:mysql_write:v1"];
8587
}
8688
}
8789

sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/providers/WriteToMySqlSchemaTransformProvider.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@
1818
package org.apache.beam.sdk.io.jdbc.providers;
1919

2020
import static org.apache.beam.sdk.io.jdbc.JdbcUtil.MYSQL;
21+
import static org.apache.beam.sdk.util.construction.BeamUrns.getUrn;
2122

2223
import com.google.auto.service.AutoService;
24+
import org.apache.beam.model.pipeline.v1.ExternalTransforms;
2325
import org.apache.beam.sdk.io.jdbc.JdbcWriteSchemaTransformProvider;
26+
import org.apache.beam.sdk.schemas.transforms.SchemaTransform;
2427
import org.apache.beam.sdk.schemas.transforms.SchemaTransformProvider;
2528
import org.checkerframework.checker.initialization.qual.Initialized;
2629
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -31,7 +34,7 @@ public class WriteToMySqlSchemaTransformProvider extends JdbcWriteSchemaTransfor
3134

3235
@Override
3336
public @UnknownKeyFor @NonNull @Initialized String identifier() {
34-
return "beam:schematransform:org.apache.beam:mysql_write:v1";
37+
return getUrn(ExternalTransforms.ManagedTransforms.Urns.MYSQL_WRITE);
3538
}
3639

3740
@Override
@@ -43,4 +46,15 @@ public String description() {
4346
protected String jdbcType() {
4447
return MYSQL;
4548
}
49+
50+
@Override
51+
public @UnknownKeyFor @NonNull @Initialized SchemaTransform from(
52+
JdbcWriteSchemaTransformConfiguration configuration) {
53+
String jdbcType = configuration.getJdbcType();
54+
if (jdbcType != null && !jdbcType.equals(jdbcType())) {
55+
throw new IllegalArgumentException(
56+
String.format("Wrong JDBC type. Expected '%s' but got '%s'", jdbcType(), jdbcType));
57+
}
58+
return super.from(configuration);
59+
}
4660
}

sdks/java/managed/src/main/java/org/apache/beam/sdk/managed/Managed.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ public class Managed {
115115
.put(KAFKA, getUrn(ExternalTransforms.ManagedTransforms.Urns.KAFKA_WRITE))
116116
.put(BIGQUERY, getUrn(ExternalTransforms.ManagedTransforms.Urns.BIGQUERY_WRITE))
117117
.put(POSTGRES, getUrn(ExternalTransforms.ManagedTransforms.Urns.POSTGRES_WRITE))
118+
.put(MYSQL, getUrn(ExternalTransforms.ManagedTransforms.Urns.MYSQL_WRITE))
118119
.build();
119120

120121
/**

sdks/python/apache_beam/transforms/external.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
ManagedTransforms.Urns.POSTGRES_READ.urn: _GCP_EXPANSION_SERVICE_JAR_TARGET,
8585
ManagedTransforms.Urns.POSTGRES_WRITE.urn: _GCP_EXPANSION_SERVICE_JAR_TARGET, # pylint: disable=line-too-long
8686
ManagedTransforms.Urns.MYSQL_READ.urn: _GCP_EXPANSION_SERVICE_JAR_TARGET,
87+
ManagedTransforms.Urns.MYSQL_WRITE.urn: _GCP_EXPANSION_SERVICE_JAR_TARGET,
8788
}
8889

8990

sdks/python/apache_beam/transforms/managed.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ class Write(PTransform):
142142
KAFKA: ManagedTransforms.Urns.KAFKA_WRITE.urn,
143143
BIGQUERY: ManagedTransforms.Urns.BIGQUERY_WRITE.urn,
144144
POSTGRES: ManagedTransforms.Urns.POSTGRES_WRITE.urn,
145+
MYSQL: ManagedTransforms.Urns.MYSQL_WRITE.urn,
145146
}
146147

147148
def __init__(

0 commit comments

Comments
 (0)