[ https://issues.apache.org/jira/browse/BEAM-3390?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jean-Baptiste Onofré reassigned BEAM-3390: ------------------------------------------ Assignee: Xu Mingmin (was: Jean-Baptiste Onofré) > unable to serialize org.apache.beam.sdk.io.jdbc.JdbcIO$Read$ReadFn > ------------------------------------------------------------------ > > Key: BEAM-3390 > URL: https://issues.apache.org/jira/browse/BEAM-3390 > Project: Beam > Issue Type: Bug > Components: dsl-sql > Affects Versions: 2.1.0 > Environment: ubuntu 16.04, idea, direct runner > Reporter: huangjianhuang > Assignee: Xu Mingmin > > Here is my Demo code: > {code:java} > PipelineOptions options = > PipelineOptionsFactory.fromArgs(args).withValidation() > .as(PipelineOptions.class); > Pipeline pipeline = Pipeline.create(options); > pipeline.apply(JdbcIO.<KV<Integer, String>>read() > > .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create( > "com.mysql.jdbc.Driver", > "jdbc:mysql://localhost:3307/libra_stat") > .withUsername("root") > .withPassword("123456")) > .withQuery("select id, game_id from test_tb") > .withCoder(KvCoder.of(BigEndianIntegerCoder.of(), > StringUtf8Coder.of())) > .withRowMapper(new JdbcIO.RowMapper<KV<Integer, String>>() > { > public KV<Integer, String> mapRow(ResultSet > resultSet) throws Exception { > System.out.println(resultSet.getInt(1)); > System.out.println(resultSet.getString(2)); > return KV.of(resultSet.getInt(1), > resultSet.getString(2)); > } > }) > ); > {code} > I run this demo by direct runner and got NotSerializableException as follow: > {code:java} > java.lang.IllegalArgumentException: unable to serialize > org.apache.beam.sdk.io.jdbc.JdbcIO$Read$ReadFn@68f4865 > at > org.apache.beam.sdk.util.SerializableUtils.serializeToByteArray(SerializableUtils.java:53) > at > org.apache.beam.sdk.util.SerializableUtils.clone(SerializableUtils.java:90) > at > org.apache.beam.sdk.transforms.ParDo$SingleOutput.<init>(ParDo.java:591) > at org.apache.beam.sdk.transforms.ParDo.of(ParDo.java:435) > at org.apache.beam.sdk.io.jdbc.JdbcIO$Read.expand(JdbcIO.java:325) > at org.apache.beam.sdk.io.jdbc.JdbcIO$Read.expand(JdbcIO.java:272) > at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:514) > at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:454) > at org.apache.beam.sdk.values.PBegin.apply(PBegin.java:44) > at org.apache.beam.sdk.Pipeline.apply(Pipeline.java:165) > at com.xiaomi.huyu.processor.demo.SqlDemo.run(SqlDemo.java:30) > at com.xiaomi.huyu.processor.demo.SqlDemo.main(SqlDemo.java:21) > Caused by: java.io.NotSerializableException: > com.xiaomi.huyu.processor.demo.SqlDemo > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) > at > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) > at > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) > at > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) > at > org.apache.beam.sdk.util.SerializableUtils.serializeToByteArray(SerializableUtils.java:49) > ... 11 more > {code} > Any suggestions and comments are welcome, thanks a lot! -- This message was sent by Atlassian JIRA (v6.4.14#64029)