1. import java.text.DecimalFormat;
    2. public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
    3. if (first) {
    4. first = false;
    5. }
    6. Object[] r = getRow();
    7. if (r == null) {
    8. setOutputDone();
    9. return false;
    10. }
    11. r = createOutputRow(r, data.outputRowMeta.size());
    12. String GMSFHM = get(Fields.In, "GMSFHM").getString(r);
    13. String XM = get(Fields.In, "XM").getString(r);
    14. String YXX = get(Fields.In, "YXX").getString(r);
    15. String rawId = GMSFHM+"_"+XM+"_"+YXX;
    16. int hashCode = rawId.hashCode();
    17. //在下方的参数tab中设置的参数
    18. int regions = Integer.valueOf(getParameter("regions"));
    19. int regionCode = Math.abs(hashCode) % regions;
    20. //格式化分区号
    21. DecimalFormat df = new DecimalFormat("00");
    22. String ID = df.format(regionCode)+"_"+rawId;
    23. get(Fields.Out, "ID").setValue(r, ID);
    24. putRow(data.outputRowMeta, r);
    25. return true;
    26. }

    设置RowKey - 图1设置RowKey - 图2