Wei Zhong created FLINK-17417:
---------------------------------

             Summary: The flink-avro-sql-jar is not really sql-jar
                 Key: FLINK-17417
                 URL: https://issues.apache.org/jira/browse/FLINK-17417
             Project: Flink
          Issue Type: Bug
          Components: Formats (JSON, Avro, Parquet, ORC, SequenceFile)
    Affects Versions: 1.10.0, 1.9.3, 1.11.0
            Reporter: Wei Zhong


The flink-avro-{flink.version}-sql-jar.jar is not really sql-jar. It does not 
contains the transitive dependence of flink-avro, i.e. Apache Avro. It can be 
reproduced by the following code:

{code:java}
URL flinkAvroSqlJar = new 
URL("file:///Users/zhongwei/flink/flink-formats/flink-avro/target/flink-avro-1.11-SNAPSHOT-sql-jar.jar");
URLClassLoader classLoader = new URLClassLoader(new URL[]{flinkAvroSqlJar}, 
Thread.currentThread().getContextClassLoader());
Thread.currentThread().setContextClassLoader(classLoader);
StreamExecutionEnvironment env = 
StreamExecutionEnvironment.getExecutionEnvironment();
List<Tuple2> list = new ArrayList<>();
list.add(new Tuple2(1, 2));
list.add(new Tuple2(3, 4));
DataStreamUtils.collect(env.fromCollection(list, Types.GENERIC(Tuple2.class)));
{code}

The exception is:
{code:java}
Exception in thread "main" java.lang.NoClassDefFoundError: 
org/apache/avro/generic/GenericData$Array
        at 
org.apache.flink.formats.avro.utils.AvroKryoSerializerUtils.addAvroGenericDataArrayRegistration(AvroKryoSerializerUtils.java:69)
        at 
org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.buildKryoRegistrations(KryoSerializer.java:565)
        at 
org.apache.flink.api.java.typeutils.runtime.kryo.KryoSerializer.<init>(KryoSerializer.java:132)
        at 
org.apache.flink.api.java.typeutils.GenericTypeInfo.createSerializer(GenericTypeInfo.java:90)
        at 
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.fromCollection(StreamExecutionEnvironment.java:814)
        at com.example.TestArgs.main(TestArgs.java:24)
Caused by: java.lang.ClassNotFoundException: 
org.apache.avro.generic.GenericData$Array
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 6 more
{code}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to