6

Hadoop-1 と Hive-0.12 で問題なく動作する GenericUDF (以下のコードを参照) があります。しかし、Hive-0.13 + Hadoop-2 を使用して同じ GenericUDF をテストすると、以下のエラーが発生します。

頂点が失敗しました、頂点名 = マップ 12、頂点 ID = vertex_1409698731658_42202_1_00、診断 = [頂点入力: ccv 初期化子が失敗しました。、org.apache.hive.com.esotericsoftware.kry o.KryoException: クラスが見つかりません: com.xxx.xxx.Id1

これが私のUDFのコードです。

package com.xxx.xxx;
import org.apache.hadoop.hive.*;

public class Id1 extends GenericUDF {
    private MapredContext context;
    private long sequenceNum = 0;
    private static final int padLength = 10;
    StringBuilder sb = null;

    public ObjectInspector initialize(ObjectInspector[] arguments)
            throws UDFArgumentException {
        sequenceNum = 0;
        sb = new StringBuilder();
        return PrimitiveObjectInspectorFactory.javaStringObjectInspector;
    }

    public Object evaluate(DeferredObject[] arguments) throws HiveException {
        int sbLength = sb.toString().length();
        if (sbLength > 0)
            sb.replace(0, sbLength, "");
        String taskId = null;
        if (context.getJobConf() != null)
            taskId = context.getJobConf().get("mapred.taskid");
        sequenceNum++;
        if (taskId != null) {
            sb.append(taskId.replace("attempt_", ""));
        }
        int i = 0;
        String seqStr = String.valueOf(sequenceNum);
        sb.append(seqStr);

        return sb.toString();
    }

    public String getDisplayString(String[] children) {
        return "id1()";
    }

    @Override
    public void configure(MapredContext context) {
        this.context = context;
    }
}

これは Hive-0.13 と関係があると確信していますが、このエラーに関連する投稿を見ることができません。

4

0 に答える 0