首页 > 解决方案 > 无法使用 impala-shell 在 kudu 中创建表

问题描述

我在研究 hadoop、hive、impala 和 kudu。安装了 HADOOP、HIVE、IMPALA 和 KUDU 服务器。

我已经在 /etc/default -> impala 文件中配置了 --kudu_master_hosts=:。即如下所示:

IMPALA_SERVER_ARGS=" \
    -log_dir=${IMPALA_LOG_DIR} \
    -catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
    -state_store_port=${IMPALA_STATE_STORE_PORT} \
    -use_statestore \
    -state_store_host=${IMPALA_STATE_STORE_HOST} \
    -be_port=${IMPALA_BACKEND_PORT}\
    --kudu_master_hosts=<HOST_NAME>:<PORT>"

============== 之后重新启动服务器。然后使用 Kudu JAVA 客户端,我能够在 kudu 中创建表并能够插入一些记录。

然后通过执行以下操作在 impala 中映射同一个表:

CREATE EXTERNAL TABLE my_mapping_table
STORED AS KUDU
TBLPROPERTIES (
  'kudu.table_name' = 'testT1'
);

成功地能够访问 impala 中的 kudu 表并能够看到所有记录。现在我正在尝试使用 impala-shell 在 KUDU 中创建一个表。

[<HOST_NAME>:21000] > CREATE TABLE my_first_table
                               > (
                               >   id BIGINT,
                               >   name STRING,
                               >   PRIMARY KEY(id)
                               > )
                               > STORED AS KUDU;

但这给出了一个错误,即:

ERROR: ImpalaRuntimeException: Error creating Kudu table 'impala::default.my_first_table'
CAUSED BY: NonRecoverableException: Not enough live tablet servers to create a table with the requested replication factor 3. 1 tablet servers are alive.

任何人都可以向我解释发生了什么或此错误的解决方案是什么。

通读 KUDU 文档,但没有得到任何想法。

问候, 阿克谢

标签: impalaapache-kudu

解决方案


此查询将有助于创建表,即

CREATE TABLE emp
(
  uname STRING,
  age INTEGER,
  PRIMARY KEY(uname)
)
STORED AS KUDU
TBLPROPERTIES (
  'kudu.num_tablet_replicas' = '1'
);

仅当 --kudu_master_hosts=: 在 /etc/default impala 文件中设置时,此查询才有效。否则,您必须在表属性中提供 kudu_master_hosts。IE

TBLPROPERTIES (
      'kudu.num_tablet_replicas' = '1',
       --kudu_master_hosts=<HOST_NAME>:<PORT>
    );

推荐阅读