MR 작업의 결과를 여러 CQL3 열 패밀리에 출력해야합니다.Hadoop CQL3을 사용한 다중 출력
내 감속기에서는 Multiple Outputs를 사용하여 CF를 지정하지만 모든 결과는 작업의 OutputCQL 문에 정의 된 하나의 CF에 기록됩니다.
는작업 definiton :
...
job.setOutputFormatClass(CqlOutputFormat.class);
ConfigHelper.setOutputKeyspace(job.getConfiguration(), "keyspace1");
MultipleOutputs.addNamedOutput(job, "CF1", CqlOutputFormat.class, Map.class, List.class);
MultipleOutputs.addNamedOutput(job, "CF2", CqlOutputFormat.class, Map.class, List.class);
CqlConfigHelper.setOutputCql(job.getConfiguration(), "UPDATE keyspace1.CF1 SET value = ? ");
...
감속기 클래스 설정 :
mos = new MultipleOutputs(context);
방법 (psudo 코드) 감소 : 내 감속기는 CF 내가 지정 무시
keys = new LinkedHashMap<>();
keys.put("key", ByteBufferUtil.bytes("rowKey"));
keys.put("name", ByteBufferUtil.bytes("columnName"));
List<ByteBuffer> variables = new ArrayList<>();
variables.add(ByteBufferUtil.bytes("columnValue"));
mos.write("CF2", keys, variables);
문제가된다 mos.write()에서 대신 outputCQL 만 실행해야합니다. 위의 예에서 모든 것은 CF1에 기록됩니다.
Ive는 "UPDATE keyspace1? SET value =?"의 줄을 따라 CF를 outputCQL에 삽입하기 위해 준비된 명령문을 사용해 보았습니다.하지만 이처럼 CF에 대해 자리 표시자를 사용할 수 있다고는 생각하지 않습니다.
감속기 클래스 내에서 outputCQL을 덮어 쓸 수있는 방법이 있습니까?