我用cdh4.7创建了一个简单的四节点hadoop集群,包括impala1.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
在数据节点上运行以生成可查询表?
2条答案
按热度按时间pu82cl6c1#
我有我认为是同一个问题,但没有解决
原来我的Hive正在访问本地的derby数据库,而 Impala 却看不到。
冒烟的枪:
在我通过hive导入表的系统上,我
解决方案:
我从cloudera manager重新部署了配置单元客户端配置。
之后:
显然,clouderamanager应该部署客户端配置,但在某些版本中,它有时无法这样做。
oyt4ldly2#
我提交了一份错误报告,得到了一个答案:
在impala1.1和更早版本中,需要发出显式的“invalidatemetadata”命令,使在其他节点上创建的表对本地impala守护进程可见。
从 Impala 1.2开始,这是没有必要的;新的目录服务将负责集群中所有impalad的元数据分发。
原来是这样
INVALIDATE METADATA
我没有注意到。很高兴听到在2.0中不需要它。