2016-09-09 3 views
1

ArangoDB에 대해 사용자 정의 OutputFormat을 쓰려고합니다. 나는 CassandraOutputFormat.java을 영감으로 사용했다. 관련된 드라이버와 호출 등을 교환했다. 나는 스칼라 예제 인 OutputFormat을 찾을 수 없었기 때문에 이것을 Java로 작성했다. Java OutputFormat을 사용하여 스칼라 튜플을 생성

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

지금, 나는 ArangoDB에 쓰고 싶은 내 FLINK 프로그램 스칼라 기록한다 : 클래스 따라서 의해 정의된다. 데이터 세트 testDataSet[Tuple2[Long, Long]]입니다. 나는 다음과 같은 오류 얻을 컴파일 할 때

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)

나는 일반적으로 타입 시스템에 조금 혼란 스러워요을 스칼라와 자바 클래스를 모두 사용할 때처럼 ArangoDB에 쓸 수있는 통화가 보인다 아무도 여기서 무슨 일이 일어 났는지 설명 할 수 있습니까? 당신의 스칼라 프로그램 반면 사전에

감사합니다, 롭

답변

1

ArangoOutputFormat는 FLINK의 자바 튜플 (org.apache.flink.api.java.tuple.Tuple)에 입력 된 스칼라의 튜플을 사용합니다. Flink의 Java 튜플은 Scala의 튜플과 호환되지 않습니다. 싱크 (sink) 전에 Mapper에 명시 적으로 자바 튜플을 생성해야합니다.

+0

빠른 응답을 주셔서 감사합니다. 나는 scala.Toolle로 변환하는 방법을 찾기 위해 고심하고 있습니다.이 작업을 수행하는 좋은 방법을 알고 계십니까? – Arkay

+0

'val st : (Int, String, Double) = (1, "a", 3.0)'을'val jt : Tuple3 [Int, String, Double] = 새로운 Tuple3 (st._1, st._2) , st._3)'? –

+0

감사 test.map 사용 (X => 새로운 org.apache.flink.api.java.tuple.Tuple2 (x._1, x._2) ) · 출력 ( 새로운 ArangoOutputFormat() ); 은 완벽하게 작동했습니다. – Arkay