我使用 CDH 4.7 创建了一个简单的四节点 Hadoop 集群,包括 Impala 1.1。我能够将 CSV 文件复制到 HDFS,并按照 the tutorial 中所述创建和查询 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
在数据节点上运行以创建可查询的表吗?
最佳答案
我提交了bug report并得到答案:
In Impala 1.1 and earlier you need to issue an explicit "invalidate metadata" command to make tables created on other nodes visible to the local Impala daemon.
Starting with Impala 1.2 this won't be necessary; the new catalog service will take care of metadata distribution to all impalad's in the cluster.
所以我没有注意到的是INVALIDATE METADATA
。很高兴听到 2.0 中不再需要它。
关于hadoop - 为什么 Impala 表定义不复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19647467/