После загрузки данных из Oracle DB в Cassandra через Sqoop я смог просматривать свои данные через Cassandra и Hive. Мне сказали, что при этом будет создано по 2 файла для каждого, что создаст проблемы с пространством. Чтобы решить эту проблему, я удалил таблицу в Hive, создал внешнюю таблицу и сопоставил ее со своим семейством столбцов в Cassandra. Но я не могу просмотреть какие-либо данные в таблице Hive. Я использую Datastax Enterprise 3.0.1. Используя Sqoop, я перенес таблицу test из Oracle DB в одноименное семейство столбцов Cassandra в пространстве ключей test_keyspace. Я могу просматривать данные через 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. Но «select * from test» показывает все значения в таблице как NULL, кроме ключа строки.
Кто-нибудь знает решение?
Попробуйте создать такую таблицу:
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" );