0

我正在使用以下 Linux 命令:

hadoop jar phoenix-4.6.0-HBase-0.98-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table TT --input /tmp/text.csv 

该命令运行成功,但是没有从 csv 文件中加载数据到 hbase 表中,但是数据成功加载到了索引表中(导入 csv 文件为 TT 的索引表)。

环境:</p>

HBASE 0.98.9

Hadoop 2.6.0

凤凰 4.6-hbase-0.98

案例1:索引覆盖所有列

1)

CREATE TABLE example (
    my_pk bigint not null,
    m.first_name varchar(50),
    m.last_name varchar(50)
    CONSTRAINT pk PRIMARY KEY (my_pk))

2)

CREATE INDEX index_example on example(m.last_name ASC) include (m.first_name)
   or create index index_example on example(m.first_name,m.last_name)

3)

hadoop jar phoenix-4.6.0-HBase-0.98-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool --table example --input /tmp/text1.csv --index-table INDEX_EXAMPLE

4)

select * from example

成功并拥有数据

select * from index_example

成功并拥有数据

测试用例:org.apache.phoenix.mapreduce.CsvBulkLoadToolIT.testImportWithIndex()

案例2:索引覆盖部分列

1)

CREATE TABLE example (
    my_pk bigint not null,
    m.first_name varchar(50),
    m.last_name varchar(50)
    CONSTRAINT pk PRIMARY KEY (my_pk))

2)

create index index_example on example(m.last_name ASC)

3)

hadoop jar phoenix-4.6.0-HBase-0.98-client.jar 
org.apache.phoenix.mapreduce.CsvBulkLoadTool --table example --input /tmp/text1.csv --index-table INDEX_EXAMPLE

4)

select * from example

成功但没有数据

select * from index_example

成功有数据

测试用例:org.apache.phoenix.mapreduce.CsvBulkLoadToolIT.testImportOneIndexTable()

4

1 回答 1

1

当您的表名是小写时,这是 Phoenix 中的一个已知错误。你需要用双引号覆盖它们

    hadoop jar phoenix-4.6.0-HBase-0.98-client.jar 
org.apache.phoenix.mapreduce.CsvBulkLoadTool --table \"\"example\"\" --input /tmp/text1.csv --index-table INDEX_EXAMPLE
于 2019-06-19T18:54:21.543 回答