使用 Java OutputFormat 发出 Scala 元组
Using a Java OutputFormat to emit Scala Tuples
我正在尝试为 ArangoDB 编写自定义 OutputFormat
。我使用 CassandraOutputFormat.java
作为灵感,换掉了相关的驱动程序和调用等。我在 Java 中写了这篇文章,因为我找不到 OutputFormat
的 Scala 示例。 class 因此定义为:
public class ArangoOutputFormat<OUT extends Tuple> extends RichOutputFormat<OUT>
现在,我要写入ArangoDB的Flink程序是用Scala写的。数据集 test
是 DataSet[Tuple2[Long, Long]]
。写入 ArangoDB 的调用如下所示:
test.output(
new ArangoOutputFormat[(Long, Long)]()
);
但是在编译时出现以下错误:
Error:(47, 11) type arguments [(Long, Long)] do not conform to class ArangoOutputFormat's type parameter bounds [OUT <:
org.apache.flink.api.java.tuple.Tuple]
new ArangoOutputFormat(Long, Long)
在同时使用 Scala 和 Java classes 时,我通常对类型系统有点困惑,谁能解释这里发生了什么?
提前致谢,
罗布
ArangoOutputFormat 被输入到 Flink 的 Java 元组 (org.apache.flink.api.java.tuple.Tuple
) 而你的 Scala 程序使用 Scala 的元组。 Flink 的 Java 元组与 Scala 的元组不兼容。您需要在接收器之前的 Mapper 中显式创建 Java 元组。
我正在尝试为 ArangoDB 编写自定义 OutputFormat
。我使用 CassandraOutputFormat.java
作为灵感,换掉了相关的驱动程序和调用等。我在 Java 中写了这篇文章,因为我找不到 OutputFormat
的 Scala 示例。 class 因此定义为:
public class ArangoOutputFormat<OUT extends Tuple> extends RichOutputFormat<OUT>
现在,我要写入ArangoDB的Flink程序是用Scala写的。数据集 test
是 DataSet[Tuple2[Long, Long]]
。写入 ArangoDB 的调用如下所示:
test.output(
new ArangoOutputFormat[(Long, Long)]()
);
但是在编译时出现以下错误:
Error:(47, 11) type arguments [(Long, Long)] do not conform to class ArangoOutputFormat's type parameter bounds [OUT <: org.apache.flink.api.java.tuple.Tuple] new ArangoOutputFormat(Long, Long)
在同时使用 Scala 和 Java classes 时,我通常对类型系统有点困惑,谁能解释这里发生了什么?
提前致谢, 罗布
ArangoOutputFormat 被输入到 Flink 的 Java 元组 (org.apache.flink.api.java.tuple.Tuple
) 而你的 Scala 程序使用 Scala 的元组。 Flink 的 Java 元组与 Scala 的元组不兼容。您需要在接收器之前的 Mapper 中显式创建 Java 元组。