복붙노트

[HADOOP] 적절한 방법은 HBase를로 XML을 넣어

HADOOP

적절한 방법은 HBase를로 XML을 넣어

나는 HBase를 (버전 1.1.x의) 로컬에 저장된 일부 XML 파일에 넣어 노력하고 있어요.

내 목표는 HDFS에로드하지 않고 맵리 듀스는 (어떤 단계를 줄일 수) 사용하지 않는 문자열로 내 HBase를 표에서 그 XMLS의 컨텐츠를 저장하는 것입니다.

여기 내 의사 코드는 다음과 같습니다

fetchXMLs(path);
XML2OneLineFile();
configureHBase(); // + establishing connection
Map(input, output); //input: one XML file in one line; output : is the Put() of HBase;
closeConnection(); 

문제는 정확한 태클이 방법은, 또는 그것을 할 수있는 더 나은 방법이있다?

추신 : 난 그냥 보관, 분석 또는 내 XML에서 데이터를 추출하고 싶지 않아요.

미리 감사드립니다

해결법

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

    1.HBase를 정말 큰 개체 저장을 위해 만든되지 않습니다. 당신의 XML의 크기에 따라, HBase를 당신이 찾고있는 해결책이 될하지 않을 수 있습니다.

    HBase를 정말 큰 개체 저장을 위해 만든되지 않습니다. 당신의 XML의 크기에 따라, HBase를 당신이 찾고있는 해결책이 될하지 않을 수 있습니다.

    지금이 순간, 나는 XML 등 다양한 파일 형식으로 구성된 데이터베이스 작업입니다. 내가 생각 좋았다 것은 SQL 또는 HBase를에서 하나의 메타 데이터를 유지, HBase를에 1메가바이트에서 모든 파일을 저장하고, 하둡에 나머지했다.

    그것은 당신이 데이터를 달성하기 위해 원하는 것을 많이 의존한다.

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

    2.대신 HBase를에 XML 문자열을 저장하는, 당신은 바이트로 저장할 수 있습니다 [] 당신은 직렬화를 사용하여 (직렬화 된 형식의) 객체로 다시 검색 할 수 있습니다.

    대신 HBase를에 XML 문자열을 저장하는, 당신은 바이트로 저장할 수 있습니다 [] 당신은 직렬화를 사용하여 (직렬화 된 형식의) 객체로 다시 검색 할 수 있습니다.

    당신은 아파치 평민 API를 사용하여 아래의 방법으로 그렇게 할 수 있습니다.

    예를 들어 :

    byte[] xmlInBytes = org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)
    

    역 직렬화를 들어,이 작업을 수행 할 수 있습니다

    static Object deserialize(byte[] objectData) 
    

    개체 W3C 문서를 할 수있는 경우, 객체는 W3C 문서에 typecasted해야합니다.

    나는 이미 객체의 많은 유형뿐만 아니라 XML로 테스트했습니다. 이 같은 방식으로 작동합니다. 도움이 되었기를 바랍니다.

  3. from https://stackoverflow.com/questions/36894265/proper-ways-to-put-xml-into-hbase by cc-by-sa and MIT license