/** * 指定のシャッフル値から特定セグメントの値を設定する。 * * @param segment 対象のセグメント * @param value 対象のシャッフル値 * @return セグメントの値 */ protected Object getShuffleValue(Segment segment, SegmentedWritable value) { String name = Naming.getShuffleValueGetter(segment.getPortId()); try { Method method = value.getClass().getMethod(name); return method.invoke(value); } catch (Exception e) { throw new AssertionError(e); } }
/** * 指定のシャッフルキーに値を設定する。 * * @param segment 対象のセグメント * @param key キー * @param toSet 設定する値 */ protected void setShuffleKey(Segment segment, SegmentedWritable key, Object toSet) { String name = Naming.getShuffleKeySetter(segment.getPortId()); try { Method method = key.getClass().getMethod(name, toSet.getClass()); method.invoke(key, toSet); } catch (Exception e) { throw new AssertionError(e); } }