2011-08-03 8 views
1

나는 활발하게 사용했다. 카산드라 열 패밀리는 자동으로 하이브 테이블에 매핑됩니다.
그러나 데이터 형식이 열 패밀리의 timeuuid 인 경우 하이브 테이블에서 읽을 수 없습니다.활발한 카산드라 TimeUUIDType

예를 들어, 다음 명령을 사용하여 열 패밀리를 매핑 할 하이브에 외부 테이블을 만들었습니다.

Hive > create external table A (rowkey string, column_name string, value string) 
    > STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler' 
    > WITH SERDEPROPERTIES (
    > "cassandra.columns.mapping" = ":key,:column,:value"); 

열 이름이 cassandra의 TimeUUIDType 인 경우 하이브 테이블에서 읽을 수 없게됩니다. 열 이름 TimeUUIDType

RowKey: 2d36a254bb04272b120aaf79d70a3578 
     => (column=29139210-b6dc-11df-8c64-f315e3a329d6, value={"event_id":101},timestamp=1283464254261) 

인 경우 :

예를 들어, 카산드라 열 가족의 행처럼 보인다. 하이브 테이블에서

은, 다음 행과 같습니다

2d36a254bb04272b120aaf79d70a3578 t��ߒ4��!�� {"event_id":101} 

그래서, 열 이름은 하이브 테이블에서 읽을 수 없습니다.

+0

여기서 렌더링을 어디에서 가져 오나요? ISTM은 Hive 도구가 timeuuid를 사람이 읽을 수있는 문자열로 변환하는 방법을 모르는 경우에도 잘 쿼리 할 수 ​​있어야합니다. – jbellis

+0

카산드라 레코드에 대해서는 카산드라 콘솔에서 가져옵니다. 하이브 레코드에 대해서는 Hive 콘솔에서 렌더링을 얻습니다. – chnet

+1

읽을 수없는 열 이름을 쿼리 할 수 ​​없습니다. 예를 들어, 하이브에서, 나는 column_name = '29139210-b6dc-11df-8c64-f315e3a329d6'어디에서 테이블에서 select *를 사용합니다. 매퍼/줄이기 작업이 시작되지만 원하는 행을 얻지 못합니다. 그것은 아무것도 반환하지 않습니다. – chnet

답변

2

이 문제는 자동 테이블 매핑의 알려진 문제입니다. timeUUIDType 최상의 결과를 얻으려면, 자동 매핑/자원/하이브/하이브를 site.xml $의 brisk_home 오프 기능 설정 : "cassandra.autoCreateHiveSchema"

수동 하이브에서 테이블을 만들 수 있습니다.

+0

오른쪽. 자동 매핑 기능을 해제했습니다. 그러나, 내 질문에 수동으로 외부 테이블을 만들려면 명령을 사용합니다. 그것은'STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler''와'SERDEPROPERTIES WITH WITH'를 사용하여 매핑합니다. TimeUUIDType을 읽을 수 없습니다. – chnet

+1

사과드립니다. 하이브 디스플레이 측면에서도 문제가 있음을 확인했습니다. 이것은 하이브가 특정 유형의 표시를 처리하는 방법과 cassandra에서 나오는 데이터의 전환을 처리하는 방법과 관련이 있습니다. 우리는 양측에서 적극적으로 노력하고 있습니다. 자동 변환 측면과 하이브 측면이지만, 처음 생각한 것보다 더 까다로워졌습니다. 그래도 가져와 줘서 고마워. 돼지는 이러한 유형으로 올바르게 작동합니다. – zznate