if the visit iterator is empty , all pairs of the rank iterator are emitted . otherwise , no pair is emitted . output format : 0 : rank 1 : url 2 : avg_duration concode_field_sep int RANKFILTER concode_elem_sep String visitsPath concode_elem_sep String[] KEYWORDS concode_elem_sep String ranksPath concode_elem_sep String documentsPath concode_elem_sep String outputPath concode_elem_sep int YEARFILTER concode_elem_sep boolean fileOutput concode_field_sep boolean filter concode_elem_sep boolean filter concode_elem_sep boolean filter concode_elem_sep DataSet<Tuple3<Integer,String,Integer>> getRanksDataSet concode_elem_sep DataSet<Tuple2<String,String>> getDocumentsDataSet concode_elem_sep void main concode_elem_sep DataSet<Tuple2<String,String>> getVisitsDataSet concode_elem_sep boolean parseParameters
void function ( Iterable < Tuple3 < Integer , String , Integer >> arg0 , Iterable < Tuple1 < String >> arg1 , Collector < Tuple3 < Integer , String , Integer >> arg2 ) { if ( ! arg1 . iterator ( ) . hasNext ( ) ) { for ( Tuple3 < Integer , String , Integer > loc0 : arg0 ) { arg2 . collect ( loc0 ) ; } } }