使用Java OutputFormat生成Scala元组



我正在尝试为ArangoDB编写自定义OutputFormat。我使用CassandraOutputFormat.java作为灵感,交换出相关的驱动程序和调用等。我用Java写这个,因为我找不到OutputFormat的Scala示例。因此,类定义为:

public class ArangoOutputFormat<OUT extends Tuple> extends RichOutputFormat<OUT>

现在,我想写到ArangoDB的Flink程序是用Scala写的。数据集testDataSet[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元组。

相关内容

  • 没有找到相关文章

最新更新