Hello everyone,
JDBCInputFormat of flink 1.1-SNAPSHOT fails with an NPE in Row.productArity:
%% snip %%
java.io.IOException: Couldn't access resultSet
at
org.apache.flink.api.java.io.jdbc.JDBCInputFormat.nextRecord(JDBCInputFormat.java:288)
at
org.apache.flink.api.java.io.jdbc.JDBCInputFormat.nextRecord(JDBCInputFormat.java:98)
at
org.apache.flink.runtime.operators.DataSourceTask.invoke(DataSourceTask.java:162)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:588)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at org.apache.flink.api.table.Row.productArity(Row.scala:28)
at
org.apache.flink.api.java.io.jdbc.JDBCInputFormat.nextRecord(JDBCInputFormat.java:279)
... 4 more
%% snip %%
Find the example code triggering this attached to this email.
The reason, I believe, is the way through which Flink creates Row instances
through Kryo. As Row expects the number of fields to allocate as a parameter,
which Kryo does not provide, the ‘fields’ member of Row ends up being null. As
I’m not a reflection, etc. expert, I rather leave a true analysis to more
knowledgable programmers.
Part of the attached example is a not very elegant workaround though a custom
type and a cast (see jdbcNoIssue).
Am I doing something wrong as to the example code, or shall I open a JIRA
ticket?
Thank you in advance,
Martin
JDBCIssue.scala
Description: Binary data
signature.asc
Description: Message signed with OpenPGP using GPGMail
