關於hadoo訪問mysql資料庫的信息

本文目錄一覽:

Hadoop和Mysql聯合查詢

你可以先用hive或者手寫map/reduce程序。建議你直接使用hive,hive也像mysql一樣可以建表。表裡的數據就是對應從本地load到hadoop上的文件,格式自己定。然後用JDBC可以像操作mysql一樣操作hive(sql語法稍有不同),把分析出來的數據再insert到mysql中去

mysql中數據怎麼導入hadoop

通過Map/Reduce進行批處理遞送到Apache

Hadoop仍然是中樞環節。,但隨著要從「超思維速度「分析方面獲取競爭優勢的壓力遞增,因此Hadoop(分散式文件系統)自身經歷重大的發展。科技的發展允許實時查詢,如Apache

Drill,Cloudera

Impala和Stinger

Initiative正脫穎而出,新一代的資源管理Apache

YARN

支持這些。

為了支持這種日漸強調實時性操作,發布一個新MySQL

Applier

for

Hadoop(用於Hadoop的MySQL

Applier)組件。它能夠把MySQL中變化的事務複製到Hadoop

/

Hive

/

HDFS。Applier

組件補充現有基於批處理Apache

Sqoop的連接性。

這個組件(MySQL

Applier

for

Hadoop)的複製是通過連接MySQL主服務,一旦二進位日誌被提交,就讀取二進位日誌事務,並且把它們寫到HDFS.

這個組件使用libhdfs提供的API,一個C庫操作HDFS中的文件。這庫由Hadoop版本預編譯生成的。

它連接MySQL主服務讀二進位日誌,然後提取發生在主服務上的行插入事件,解碼事件,提取插入到行的每個欄位的數據,並使用滿意的處理程序得到被要求的格式數據。把它追加到HDFS

中一個文本文件。

資料庫被映射為單獨的目錄,它們的表映射為子目錄,保存在數據倉庫目錄。每個表的數據被寫到Hive/

HDFS中文本文件(稱為datafile1.txt)。數據可以用逗號格式分隔;或其他格式,那可用命令行參數來配置的。

hadoop和mysql的結合作用方案

首先你的源數據是想存在mysql里,還是存到hadoop 里。

有一些方案是把最原始的數據,存入hadoop中。定期做清洗和分析,把處理好的數據放到mysql庫里,供web應用讀取,展示到頁面上。

hadoop可以用mysql作為資料庫嗎

hadoop一般是應用於冷數據處理,對於實時數據,如果非要使用,可以變著方法使用。

方法一:在hadoop上使用hbase資料庫,以為hbase是不走Map/Reduce的,所以操作在毫秒級。

方法二:將業務數據用程序分成實時數據和冷數據,實時數據存於關係資料庫,冷數據存到hadoop。比如:將最近一個月的數據存到關係資料庫,用做實時響應業務處理。將一個月以前的數據存到hadoop,用作歷史數據查詢以及統計分析,數據挖掘等。

怎麼將mysql數據導入hadoop

通過Map/Reduce進行批處理遞送到Apache

Hadoop仍然是中樞環節。,但隨著要從「超思維速度「分析方面獲取競爭優勢的壓力遞增,因此Hadoop(分散式文件系統)自身經歷重大的發展。科技的發展允許實時查詢,如Apache

Drill,Cloudera

Impala和Stinger

Initiative正脫穎而出,新一代的資源管理Apache

YARN

支持這些。

為了支持這種日漸強調實時性操作,發布一個新MySQL

Applier

for

Hadoop(用於Hadoop的MySQL

Applier)組件。它能夠把MySQL中變化的事務複製到Hadoop

/

Hive

/

HDFS。Applier

組件補充現有基於批處理Apache

Sqoop的連接性。

這個組件(MySQL

Applier

for

Hadoop)的複製是通過連接MySQL主服務,一旦二進位日誌被提交,就讀取二進位日誌事務,並且把它們寫到HDFS.

這個組件使用libhdfs提供的API,一個C庫操作HDFS中的文件。這庫由Hadoop版本預編譯生成的。

它連接MySQL主服務讀二進位日誌,然後提取發生在主服務上的行插入事件,解碼事件,提取插入到行的每個欄位的數據,並使用滿意的處理程序得到被要求的格式數據。把它追加到HDFS

中一個文本文件。

資料庫被映射為單獨的目錄,它們的表映射為子目錄,保存在數據倉庫目錄。每個表的數據被寫到Hive/

HDFS中文本文件(稱為datafile1.txt)。數據可以用逗號格式分隔;或其他格式,那可用命令行參數來配置的。

如何將mysql數據導入hadoop

完成sqoop的安裝後,可以這樣測試是否可以連接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下):

sqoop list-databases –connect jdbc:mysql://192.168.1.109:3306/ –username root –password 19891231

結果如下

即說明sqoop已經可以正常使用了。

下面,要將mysql中的數據導入到hadoop中。

我準備的是一個300萬條數據的身份證數據表:

先啟動hive(使用命令行:hive 即可啟動)

然後使用sqoop導入數據到hive:

sqoop import –connect jdbc:mysql://192.168.1.109:3306/hadoop –username root –password 19891231 –table test_sfz –hive-import

sqoop 會啟動job來完成導入工作。

完成導入用了2分20秒,還是不錯的。

在hive中可以看到剛剛導入的數據表:

我們來一句sql測試一下數據:

select * from test_sfz where id 10;

可以看到,hive完成這個任務用了將近25秒,確實是挺慢的(在mysql中幾乎是不費時間),但是要考慮到hive是創建了job在hadoop中跑,時間當然多。

接下來,我們會對這些數據進行複雜查詢的測試:

我機子的配置如下:

hadoop 是運行在虛擬機上的偽分散式,虛擬機OS是ubuntu12.04 64位,配置如下:

TEST 1 計算平均年齡

測試數據:300.8 W

1. 計算廣東的平均年齡

mysql:select (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like ‘廣東%’;

用時: 0.877s

hive:select (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz where address like ‘廣東%’;

用時:25.012s

2. 對每個城市的的平均年齡進行從高到低的排序

mysql:select

address, (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge

from test_sfz GROUP BY address order by ageAvge desc;

用時:2.949s

hive:select

address, (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as

ageAvge from test_sfz GROUP BY address order by ageAvge desc;

用時:51.29s

可以看到,在耗時上面,hive的增長速度較mysql慢。

TEST 2

測試數據:1200W

mysql 引擎: MyISAM(為了加快查詢速度)

導入到hive:

1. 計算廣東的平均年齡

mysql:select (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like ‘廣東%’;

用時: 5.642s

hive:select (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as ageAvge from test_sfz2 where address like ‘廣東%’;

用時:168.259s

2. 對每個城市的的平均年齡進行從高到低的排序

mysql:select

address, (sum(year(NOW()) – SUBSTRING(borth,1,4))/count(*)) as ageAvge

from test_sfz2 GROUP BY address order by ageAvge desc;

用時:11.964s

hive:select

address, (sum(year(‘2014-10-01’) – SUBSTRING(borth,1,4))/count(*)) as

ageAvge from test_sfz2 GROUP BY address order by ageAvge desc;

用時:311.714s

原創文章,作者:BALUE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330784.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BALUE的頭像BALUE
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28

發表回復

登錄後才能評論