2012-05-01 24 views
2

我正在嘗試hadoop及其相關的東西。爲此,我在Ubuntu機器上配置了hadoop,hase,hive,sqoop。Sqoop導入已成功完成。如何在Hive中查看這些表

[email protected]:~/sqoop$ bin/sqoop-import --connect jdbc:mysql://localhost:3306/mysql --username root --password password --table user --hive-import -m 1 

一切都很好,但是當我輸入配置單元命令行並執行顯示錶時,什麼也沒有。我能夠看到這些表格是在HDFS中創建的。

我在Sqoop導入中看到了一些選項 - 它可以導入到Hive/HDFS/HBase。 導入到Hive中時,它確實直接導入到HDFS中。那麼爲什麼Hive?

我在哪裏可以執行HiveQL來檢查數據。

從cloudera支持,我明白我可以順化並檢查它。但是,我認爲Hue只是Hive的用戶界面。

有人可以幫我在這裏。

由於提前,

Raghu

回答

2

我有同樣的問題。我能夠通過將數據直接導入到HDFS中來解決/通過它,然後創建一個Hive表來指向HDFS中的特定位置。這是一個適合我的例子。

create external table test (
    sequencenumber int, 
    recordkey int, 
    linenumber int, 
    type string) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' 
    location '/user/hdfs/testdata'; 

您需要將您的位置更改爲您在HDFS中保存數據的位置。

+0

感謝Gittins的回覆。它對我很好。但我想知道,我們是否需要每次創建外部表以訪問HDFS數據。不會是一個開銷? – Raghu

+0

您不需要在Hive中創建外部表來訪問HDFS中的數據。這是我設置外部表來訪問Hive中數據的方式。 –

2

你可以發佈sqoop的輸出嗎?嘗試使用--verbose選項。

下面是我使用的命令的示例,它直接導入到Hive表。

sqoop import --hive-overwrite --hive-drop-import-delims --warehouse-dir "/warehouse" --hive-table hive_users --connect jdbc:mysql://$MYSQL_HOST/$DATABASE_NAME --table users --username $MYSQL_USER --password $MYSQL_PASS --hive-import 
0

而是每次創建蜂巢表,您可以使用sqoop的創建蜂巢-table命令導入在蜂巢表結構。它會將表導入爲managed_table,然後通過將表屬性更改爲外部表然後添加分區,可以將該錶轉換爲外部表。這將減少尋找正確數據類型的努力。請注意,將會有精確更改

0

每當您使用具有Hive導入選項的Sqoop時,sqoop會直接連接相應的數據庫的Metastore並獲取相應表的元數據(表格的模式),因此存在不需要在Hive中創建一個表結構。然後在與Hive-import選項一起使用時將此模式提供給Hive。

因此,所有的sqoop數據對HDFS的產量將存儲在默認目錄.IE /用戶/ sqoop /表名/一部分-M檔

與蜂巢導入選項默認情況下,該表將被直接下載在默認倉庫direcotry即

/用戶/蜂巢/倉儲/表名 命令:sudo的-u Hadoop的HDFS FS -ls -R /用戶/ 這個遞歸列出與該用戶的所有文件。

現在轉到Hive並鍵入show databases。如果只有默認數據庫,則 然後鍵入show tables: 記住OK是常見的默認系統輸出並且不是命令輸出的一部分。

配置單元> show databases;採取

OK

默認

時間:0.172秒

蜂巢>節目表;

OK

流派

log_apache

電影

moviegenre

movierating

職業

用戶採取

時間:0.111秒

0

嘗試sqoop命令就是這樣,它的工作對我來說,直接創造蜂巢表,U不需要創建外部表每次

sqoop進口--connect DB_HOST --username ***** --password ***** --query「select * from SCHEMA.TABLE where \ $ CONDITIONS」
--num-mappers 5 --split-by PRIMARY_KEY --hive-import --hive-table HIVE_DB.HIVE_TABLE_NAME --target-dir SOME_DIR_NAME;

1

當我們在sqoop import命令中沒有給出任何數據庫時,該表將在默認數據庫中創建,其名稱與RDBMS表名相同。 您可以通過「--hive-database」指定要在配置單元中導入RDBMS表的數據庫名稱。

0

您正在使用的命令將數據導入$ HIVE_HOME目錄。如果未設置HIVE_HOME環境變量或指向錯誤的目錄,則將無法查看導入的表。

找到蜂巢主目錄的最好方法是使用Hive QL SET命令:

hive -S -e 'SET' | grep warehouse.dir

一旦檢索到的蜂巢主目錄,追加--hive-home <hive-home-dir>選項,你的命令。

另一個可能的原因是,在一些Hive設置中,元數據被緩存,您無法立即看到更改。在這種情況下,您需要使用INVALIDATE METADATA;命令刷新元數據緩存。