Cassandra에 대한 Hive 매핑을 통해 데이터를 볼 수 없습니다.

Cassandra에 대한 Hive 매핑을 통해 데이터를 볼 수 없습니다.

Sqoop을 통해 Oracle DB에서 Cassandra로 데이터를 로드한 후 Cassandra와 Hive를 통해 내 데이터를 볼 수 있었습니다. 그렇게 하면 각각 2개의 파일이 생성되어 공간 문제가 발생한다고 들었습니다. 이 문제를 해결하기 위해 Hive에 테이블을 삭제하고 외부 테이블을 생성한 후 Cassandra의 컬럼 패밀리에 매핑했습니다. 하지만 Hive 테이블의 데이터를 볼 수 없습니다. Datastax Enterprise 3.0.1을 사용하고 있습니다. Sqoop을 사용하여 Oracle DB의 'test' 테이블을 키스페이스 'test_keyspace'에 있는 동일한 이름의 Cassandra 컬럼 패밀리로 마이그레이션했습니다. 다음 명령을 사용하여 cassandra-cli를 통해 데이터를 볼 수 있습니다. list test;

cqlsh에서 열 패밀리를 설명하면 다음과 같은 결과가 나타납니다.

CREATE TABLE test (
rowkey text PRIMARY KEY,
bar text,
gump bigint,
home text,
note text,
pay text
) WITH
comment='' AND
comparator=text AND
read_repair_chance=0.100000 AND
gc_grace_seconds=864000 AND
default_validation=text AND
min_compaction_threshold=4 AND
max_compaction_threshold=32 AND
replication_on_write='true' AND
compaction_strategy_class='SizeTieredCompactionStrategy' AND compression_parameters:stable_compression='SnappyCompressor';

Hive 테이블을 생성하는 데 사용하는 명령은 다음과 같습니다.

CREATE external TABLE test (
rowkey string,
bar string,
gump string,
home string,
note string,
pay string
)
STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler'
TBLPROPERTIES ( "cassandra.ks.name" = "test_keyspace" );

Hive에 'show tables'를 입력하면 테이블이 나열됩니다. 그러나 'select * from test'는 행 키를 제외하고 테이블의 모든 값을 NULL로 표시합니다.

누구든지 해결책을 알고 있습니까?

답변1

다음과 같이 테이블을 만들어 보십시오.

CREATE external TABLE test (
    rowkey string,
    bar string,
    gump string,
    home string,
    note string,
    pay string
)
STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler'
WITH SERDEPROPERTIES("cql.primarykey"="rowkey"
TBLPROPERTIES ( "cassandra.ks.name" = "test_keyspace", "cassandra.cql.type"="text, text, text, text, text, text" );

관련 정보