2

我使用 CDH 4.7 创建了一个简单的四节点 Hadoop 集群,包括 Impala 1.1。我能够将 CSV 文件复制到 HDFS 并按照教程中的描述创建和查询 Impala 表。但我无法在不同的数据节点上查询同一张表:

[example.com:21000] > select * from tab1;
Query: select * from tab1
ERROR: AnalysisException: Table does not exist: default.tab1

我想也许我需要CREATE TABLE在第二个节点上重新发出语句,但是它突然知道表在那里:

[example.com:21000] > CREATE EXTERNAL TABLE tab1
                    > (
                    >    id INT,
                    >    col_1 BOOLEAN,
                    >    col_2 DOUBLE,
                    >    col_3 TIMESTAMP
                    > )
                    > ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
                    > LOCATION '/user/dwheeler/sample_data/tab1';
Query: create EXTERNAL TABLE tab1
(
id INT,
col_1 BOOLEAN,
col_2 DOUBLE,
col_3 TIMESTAMP
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/theory/sample_data/tab1'
ERROR: AlreadyExistsException: Table tab1 already exists

所以它知道它在那里,但我不能查询它---或刷新它:

[example.com:21000] > refresh tab1;
Query: refresh tab1
ERROR: AnalysisException: Table does not exist: default.tab1

是否需要执行一些命令才能让所有impalad数据节点上的 s 运行以创建可查询的表?

4

2 回答 2

2

我提交了一份错误报告并得到了答复:

在 Impala 1.1 和更早版本中,您需要发出明确的“使元数据无效”命令,以使在其他节点上创建的表对本地 Impala 守护进程可见。

从 Impala 1.2 开始,这不是必需的;新的目录服务将负责向集群中的所有 impalad 分发元数据。

所以INVALIDATE METADATA我没有注意到。很高兴听到在 2.0 中不需要它。

于 2013-10-30T20:07:21.870 回答
1

我有我认为是同样的问题,但它没有解决

invalidate metadata;

原来,我的蜂巢正在访问一个本地 derby 数据库,而 impala 看不到该数据库。

吸烟枪:

在我通过 hive 导入表的系统上,我有

cat /etc/hive/conf/hive-site.xml
[...]
<property>
    <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:derby:;databaseName=/var/lib/hive/metastore/metastore_db;create=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
[...]

解决方案:

我从 Cloudera Manager 重新部署了配置单元客户端配置。

然后:

  cat /etc/hive/conf/hive-site.xml
  [...]
  <property>
    <name>hive.metastore.local</name>
    <value>false</value>
  </property>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://[snipped-host-name]:[snipped-port]</value>
  </property>

显然 Cloudera Manager 应该部署客户端配置,但在某些版本中它有时无法这样做。

于 2014-04-03T20:39:10.510 回答