2014-02-14 77 views
0

將數據從MySQL導入到Hadoop Hive時,我需要在Hive創建的新表中添加額外的'時間戳'字段。如何在使用Hadoop Sqoop將數據導入到Hive時更改表模式?

Input: MySQL table fields : Name, e-nmail, address 
Output: Hive table fileds : Name, e-nmail, address, timestamp 

問題:

  1. 如何申請Sqoop一個「時間戳」字段添加到新表,它 創建對導入的數據存儲在蜂巢?
  2. 如何修改Hive中現有表的模式(添加/ 刪除字段)?
+0

ALTER TABLE表名ADD |更換柱(COL_NAME DATA_TYPE [COMMENT col_comment],...) – Jasper

+0

謝謝!這回答我的第二個問題,我假設:如何修改Hive中現有表的模式(添加/刪除字段)?關於1)的問題呢? –

+0

你期待什麼時間戳? sqoop導入時間或數據插入到MySQL的時間? –

回答

0

您可以通過在Sqoop中使用--query參數來自定義從RDBMS中選擇的數據。您的命令可能是這個樣子:

sqoop import \ 
--connect jdbc:mysql://host:port/db \ 
--query 'SELECT name, email, address, NOW() AS timestamp FROM table WHERE $CONDITIONS' \ 
--split-by name \ 
--hive-import \ 
--hive-table table \ 
--target-dir location 
+0

@CarterShanklin感謝傑里米的有用信息!作爲另一種情況,我的輸入可能由兩部分組成:1)MySQL表2)單獨的日誌,其中包含上表中記錄的時間戳記。因此,在這種情況下,我從其他來源獲取記錄時間戳,並且仍然需要將它們添加到Hive中的結果記錄中。不知道這是否可以用Sqoop在飛行中完成... –

+0

不,您需要按照以下步驟操作。 Sqoop只處理關係數據庫和Hadoop之間的數據。 –

相關問題