2014-06-11 2 views
0

이 같은 데이터를 XML 데이터베이스가 : 데이터의하둡 및 구조화 된 데이터는

<events> 
     <event id="123"> 
      <location>ABC</location> 
      <subsystem>Storage</subsystem> 
      <warning> 
       <date>2014-04-01</date> 
       <text>warning1<text/> 
      </warning> 
      <warning> 
       <date>2014-04-02</date> 
       <text>warning2<text/> 
      </warning> 
      <warning> 
       <date>2014-04-03</date> 
       <text>warning3<text/> 
      </warning> 
     </event> 
     .... 
</events> 

양은 성장을, 그래서 하둡으로 처리로 전환하고 싶습니다. 각 이벤트에 대해 추가 노드 하나를 추가하고 싶다고하자 : < 레벨> ...... < 경고> 노드에 레벨/레벨> 기본. 이제 해결해야 할 여러 문제가 있습니다.

  • 어떻게 구조화 된 데이터를 Hadoop에 저장할 수 있습니까? 나는 XML로 유지할 수 있지만 네이티브 xml/json 지원 (돼지 지원 json 있지만 목록이없는) 모든 도구를 볼 수 없습니다. 열별로 여러 파일로 분할 할 수 있습니다 (하나는 이벤트 용이고 다른 하나는 경고 용으로 이벤트 ID로 결합). 서브 노드가 많이 있습니다 (원래 형식의 일부 임). 문제가 될 것이다.

  • 새 열 (수준)은 현재 데이터가있는 생성 된 새 XML 파일에 저장하거나 event_id를 수준에 매핑하는 것처럼 새 파일에 저장할 수 있습니다. 새로운 xml 파일에 모든 데이터를 저장하려면 xml 파일을 다시 생성해야하지만, 다른 파일을 저장하려면 레벨에 액세스해야 할 때마다 파일을 추가해야합니다. 사이에 someting 있나요 (그냥 일부 형식으로 행을 업데이 트?).

  • 몇 가지 행에 대해 새로운 노드/열을 쉽게 추가 할 수 있다면 좋을 것입니다 (중요한 메모가있는 경우처럼 추가 메모를 추가하고 싶을 때처럼). easlyly xml을 사용하여 수행 할 수 있지만, 열이있는 경우 모든 행에 대해 새 열을 추가해야합니다.

  • 대부분의 도구는 플랫 구조 만 지원합니다. Hiber와 같은 Hiber와 같은 도구가 있지만 내 경우에는 너무 많은 조인이있을 것이므로 데이터를 단일 구조화 된 레코드로 유지하는 것을 선호합니다. 이미이 문제를 해결하는 몇 가지 해결책이 있습니까? 당신의 형식, XML 대신, 데이터를 저장하는 형식으로 브로 (http://avro.apache.org) 또는 Google Protobuf의 https://code.google.com/p/protobuf/를 사용하고, 하이브 테이블에서 레코드를 해석하는 브로 Serde를 사용에서

답변

1

봐.

Avro는 버전 관리를 지원하므로 기본 버전과 테이블 정의에 사용 된 스키마 버전에 따라 다른 열 집합을 사용하여 다른 레코드를 가질 수 있습니다. Avro는 또한 임의로 중첩되고 복잡한 구조에 대한 요구 사항을 지원해야합니다.

관련 문제