2016-03-22 2 views
0

Я пытаюсь объединить два файла на основе некоторого общего значения поля и получить все согласованные записи.Cascading - Присоединить два файла на основе значения поля

У меня есть два Tap для чтения двух файлов. Я хочу присоединиться к файлам и получить согласованные записи, используя noField.

Как присоединиться к файлам и assemble Трубы для создания Flow?

Пример кода:

Properties properties = new Properties(); 
AppProps.setApplicationJarClass(properties, Test.class); 
FlowConnector flowConnector = new LocalFlowConnector(); 

Fields custFields = new Fields("no", "name", "city"); 
FileTap custFileTap = new FileTap(new TextDelimited(custFields,true, ","), "C://Users//Test//cust.txt"); 

Fields tsctnFields = new Fields("no", "tdate", "tamt"); 
FileTap tsctnFileTap = new FileTap(new TextDelimited(tsctnFields,true, ","), "C://Users//Test//tsctn.txt"); 

ответ

0

Строительные трубы, подсоединенные к кранам, присоединиться к ним, а затем подключить выходной шланг к раковине.

Tap outTap = new MultiSinkTap(); // just saying, create your own tap 
Pipe custFilePipe = new Pipe("custFilePipe"); 
Pipe tsctnFilePipe = new Pipe("tsctnFilePipe"); 

Fields groupFields = new Fields("no"); // fields used as joining keys 
Pipe outPipe = new CoGroup(custFilePipe, groupFields, tsctnFilePipe, groupFields, new InnerJoin()); 

// build flow definition 
FlowDef flowDef = FlowDef.flowDef().setName("myFlow") 
.addSource(custFilePipe, custFileTap) 
.addSource(tsctnFilePipe, tsctnFileTap) 
.addTailSink(outPipe, outTap); 

Flow flow = flowConnector.connect(flowDef); // now you build the flow 
flow.complete(); // run flow 

Cascading for the Impatient хороший учебник, который я рекомендую каскадного начинающих.

Смежные вопросы