我正在尝试为ArangoDB编写自定义OutputFormat
。我使用CassandraOutputFormat.java
作为灵感,交换出相关的驱动程序和调用等。我用Java写这个,因为我找不到OutputFormat
的Scala示例。因此,类定义为:
public class ArangoOutputFormat<OUT extends Tuple> extends RichOutputFormat<OUT>
现在,我想写到ArangoDB的Flink程序是用Scala写的。数据集test
为DataSet[Tuple2[Long, Long]]
。写入到ArangoDB的调用如下所示:
test.output(
new ArangoOutputFormat[(Long, Long)]()
);
但是当编译时,我得到以下错误:
错误:(47,11)类型参数[(Long, Long)]不符合类ArangoOutputFormat的类型参数边界[OUT <;org.apache.flink.api.java.tuple.Tuple]new ArangoOutputFormat(Long, Long)
在使用Scala和Java类时,我通常对类型系统有点困惑,有人能解释一下这里发生了什么吗?
提前感谢,Rob
ArangoOutputFormat类型为Flink的Java元组(org.apache.flink.api.java.tuple.Tuple
),而您的Scala程序使用Scala的元组。Flink的Java元组与Scala的元组不兼容。您需要在接收器之前显式地在Mapper中创建Java元组。