2013-10-29 64 views
2

我使用CDH 4.7創建了一個簡單的四節點Hadoop集羣,其中包括Impala 1.1。我可以將CSV文件複製到HDFS,並按照the tutorial中所述創建和查詢Impala表。但我不能查詢不同的數據節點上的同一個表:爲什麼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的在數據節點上運行以創建可查詢表?

回答

2

我提起bug report,並得到一個答案:

在因帕拉1.1和更早的版本,你需要發出明確的「無效的元數據」命令創建到本地黑斑羚守護可見其他節點創建的表。

從Impala 1.2開始,這不是必需的;新的目錄服務將負責將元數據分發給羣集中的所有impalad。

所以這是我沒有注意到的INVALIDATE METADATA。很高興聽到它在2.0中不是必需的。

1

我有我的想法是一樣的問題,但它不是由

invalidate metadata; 

原來,我的蜂巢被訪問本地Derby數據庫,其中黑斑羚看不到解決。

是確鑿的證據:

在哪裏我已通過蜂巢進口表中的系統,我有

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的蜂巢客戶端配置經理。

算賬:

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的經理應該部署客戶端配置,但在某些版本中,它有時不這樣做。