복붙노트

[HADOOP] 외부 라이브러리와 하둡 하이브 UDF

HADOOP

외부 라이브러리와 하둡 하이브 UDF

나는 사용자 에이전트를 구문 분석 하둡 하이브 대한 UDF를 작성하는 것을 시도하고있다. 코드를 따르는 것은 내 로컬 컴퓨터에서 잘 작동하지만 하둡에 내가 받고 있어요 :

암호:

import java.io.IOException;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.*;
import com.decibel.uasparser.OnlineUpdater;
import com.decibel.uasparser.UASparser;
import com.decibel.uasparser.UserAgentInfo;

public class MyUDF extends UDF {

    public String evaluate(String i) {
        UASparser parser = null;         
        parser = new UASparser(); 
        String key = "";
        OnlineUpdater update = new OnlineUpdater(parser, key);
        UserAgentInfo info = null;
        info = parser.parse(i);
        return info.getDeviceType();
    }
}

내가 언급해야 내 마음에 와서 현황 :

어떤 제안?

감사합니다, 마이클

해결법

  1. ==============================

    1.그것은 몇 가지있을 수 있습니다. 가장 좋은 점은 로그를 확인하는 것입니다, 그러나 여기 당신이 분에 확인할 수있는 몇 가지 간단한 것들의 목록입니다.

    그것은 몇 가지있을 수 있습니다. 가장 좋은 점은 로그를 확인하는 것입니다, 그러나 여기 당신이 분에 확인할 수있는 몇 가지 간단한 것들의 목록입니다.

    포함 된 것을 볼 수 있습니다. 당신은 com.decibel.uasparser에서 물건을 볼 수 있습니다. 그렇지 않은 경우, 해당 종속성이있는 단지를 구축해야 (보통 당신이 그 받는다는 사용).

    여기를 변경하는 방법은 다음과 같습니다

    public class MyUDF extends UDF {
      UASparser parser = new UASparser();
    
      public MyUDF() {
        super()
        String key = "PUT YOUR KEY HERE";
        // update only once, when the UDF is instantiated
        OnlineUpdater update = new OnlineUpdater(parser, key);
      }
    
      public String evaluate(String i) {
            UserAgentInfo info = parser.parse(i);
            if(info!=null) return info.getDeviceType();
            // you want it to return null if it's unparseable
            // otherwise one bad record will stop your processing
            // with an exception
            else return null; 
        }
    }
    

    그러나 확실히 알고, 당신은 로그 ... 실 로그를보고있다, 또한 당신은 (아마의 / var / 하이브 / 로그 당신의 작업을 제출하고있는 시스템에서 하이브 로그를 볼 수 있지만, 의존 설치에).

  2. ==============================

    2.아마 단계에 의해 해결 될 수있는 문제 :

    아마 단계에 의해 해결 될 수있는 문제 :

    시도 해봐. 나는 이것을 테스트하고 작동

  3. from https://stackoverflow.com/questions/34435052/hadoop-hive-udf-with-external-library by cc-by-sa and MIT license