hadoop - 为什么 Impala 表定义不复制?

标签 hadoop hdfs impala

我使用 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/

相关文章:

python - 使用Impala选择带有通配符模式的多个表并将其连接

hadoop - 如何在hadoop HDFS中拆分网络负载

hadoop - Hadoop 可以分发任务和代码库吗?

hadoop - Hive 查询语言仅返回与另一个表中的值不同的值

hadoop - 如何检查impala守护程序实例和statestored守护程序实例是否正在运行?

hadoop - Ansible(模块文件系统): Device item not found

mysql - Hadoop/Sqoop通信链接错误-无法从MySQL导入表

hadoop - 将数据加载到配置单元中时,删除字段中的引号

hadoop - 有没有办法显示表何时更新/创建?

python - 是否可以将文件保存在 Hadoop 中而不将它们保存在本地文件系统中?