2017-04-13 29 views
1

我有一個Hadoop環境1個主,我在哪裏節約了MySQL的應用程序的所有數據與sqoop 4個節點在hdfs中做選擇的最佳方法?

我需要通過應用程序的Web訪問此數據存儲在Hadoop中,換句話說:如果用戶使用6個月前的日期創建記錄,我希望應用程序在hadoop數據中進行選擇。

他們是關係數據,mysql。我不必做任何好的分析。

  • 這是可行的嗎?
  • 什麼是最好的辦法呢?
  • 你使用什麼工具?
  • 發送hdfs中的數據對於這種情況不可行嗎?

預先感謝您

回答

1

當我明白你的問題,你是從MySQL使用sqoop數據導入到HDFS。

現在你想對HDFS中的這些數據執行一些查詢。


可以使用蜂巢做到這一點。您可以對數據執行HQL(類似於SQL)。

您可以使用sqoop將數據直接從MySQL導入到Hive。現在你在Hive中有類似於MySQL的表格。您可以對其執行任何查詢。

樣品命令:

sqoop import \ 
--connect 'jdbc:mysql://myhost:3306/classicmodels' \ 
--driver com.mysql.jdbc.Driver \ 
--username root \ 
--password root \ 
--table abc \ 
--target-dir /user/dev/db/sqoop/temp_81323/ \ 
--hive-import \ 
--hive-table hive_abc \ 
--null-string '\\N' \ 
--null-non-string '\\N' \ 
--verbose 

檢查sqoop documentation瞭解更多詳情。

+0

問題是我必須在配置單元中手動導入外部表,我目前有超過50個表,並且每天都會創建新表 –

+0

而如何才能使選擇在配置單元中起作用從網絡?爲什麼命令行?或蜂巢有任何API?我看到有一個用於java的庫... –

+1

您可以使用[import-all-tables](https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_purpose_2)來導入所有表的數據庫。 –