日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

hive sqoop导出 postgresql精度丢失_Mysql 与 hadoop 数据同步(迁移),你需要知道 Sqoop...

發布時間:2023/12/10 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive sqoop导出 postgresql精度丢失_Mysql 与 hadoop 数据同步(迁移),你需要知道 Sqoop... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇文章 Mysql 到 Hbase 數據如何實時同步,強大的 Streamsets 告訴你 我們說到了如何使用 Streamsets 來進行 mysql 到 hbase 的數據實時同步(遷移)。使用 Streamsets 的優點是部署簡單,配置靈活,無需編寫代碼。

認真閱讀上篇文章的朋友會發現,Streamsets 能夠實時跟蹤數據的變化,將數據同步更新到 hbase 中。但是對于歷史數據(并且數據不改動的記錄)的同步,文章中并沒有提及到。當然,并不是因為 Streamsets 不能從事這些事情,而是筆者暫時沒有使用它來進行歷史數據的遷移。因此,對于歷史數據的遷移,筆者今天來介紹另外一個工具 - Sqoop。相對于 Streamsets,大家應該更加熟悉 Sqoop。

如果你工作中需要將關系型數據庫(Mysql、Oracle等等)中的數據同步到 hadoop(HDFS、hive、hbase) 中,或者將 hadoop 中的數據同步到關系型數據庫中,那這篇文章應該能幫助到你。

注:Streamsets 以及 Sqoop 都屬于數據同步、遷移方面比較流行的解決方案,類似的工具還有很多,比如 Datax、kettle 等等,從事數據方面工作的朋友可以去多多了解,找到適合自己工作場景的方案。

認識一下

Sqoop 的命名,仔細一看是不是有點像 sql 和 hadoop 兩個詞語的拼接產物。其實從它的命名來看也就很明顯:它是用來將關系型數據庫和 Hadoop 中的數據進行相互轉移的工具,并且這種轉換是雙向的。看下圖就能一目了然:

從關系型數據庫到 hadoop 我們稱之為 import,從 hadoop 到關系型數據庫我們稱之為 export。文章后面大家就會看到 "import"、"export" 對應命令的兩個模式。

安裝

對于 Sqoop 的安裝,這里就不做介紹了,網上有很多的教程,因為是一個工具,所以安裝起來也是很方便簡單。需要注意的是 Sqoop 有兩個大的版本:Sqoop1、Sqoop2。

訪問 Sqoop 官網 ,官網上的 1.4.x 的為 Sqoop1, 1.99.* 為 Sqoop2。

關于 Sqoop1 與 Sqoop2 的區別,通俗來講就是:

  • sqoop1 只是一個客戶端工具,Sqoop2 加入了 Server 來集中化管理連接器
  • Sqoop1 通過命令行來工作,工作方式單一,Sqoop2 則有更多的方式來工作,比如 REST api接口、Web 頁
  • Sqoop2 加入權限安全機制
  • 對于筆者來說,Sqoop 就是一個同步工具,命令行足夠滿足工作需求,并且大部分數據同步都是在同一個局域網內部(也就沒有數據安全之類問題),所以選擇的是 Sqoop1(具體版本是 1.4.6)

    框架原理

    通過上圖可以看出, Sqoop Client 通過 shell 命令來使用 sqoop, sqoop 中的 Task Translater 將命令轉換成 hadoop 中的 mapreduce 任務進行具體的數據操作。可以這樣理解,例如 Mysql 中某個表數據同步到 hadoop 這個場景,Sqoop 會將表記錄分成多份,每份分到各自 mapper 中去進行落地 hadoop(保證同步效率)。大家可能發現,其實這里的 mapreduce 沒有 reduce,只有 map。

    實操

    了解了 Sqoop 是什么,能做什么以及大概的框架原理,接下來我們直接使用 Sqoop 命令來感受一下使用 Sqoop 是如何簡單及有效。本文案例中的關系型數據庫使用的是 mysql,oracle 以及其他使用 jdbc 連接的關系型數據庫操作類似,差別不大。

    運行 sqoop help 可以看到 Sqoop 提供了哪些操作,如下圖

    這些操作其實都會一一對應到 sqoop bin 目錄下的一個個可運行腳本文件,如果想了解細節,可以打開這些腳本進行查看

    工作中一般常用的幾個操作或者命令如下:

  • list-databases : 查看有哪些數據庫
  • list-tables : 查看數據庫中有哪些表
  • import : 關系型數據庫到 hadoop 數據同步
  • export : hadoop 到關系型數據庫數據同步
  • version :查看 Sqoop 版本
  • 列出數據庫

    sqoop list-databases --connect jdbc:mysql://192.168.1.123:3306/ --username root --password 12345678

    列出表

    sqoop list-databases --connect jdbc:mysql://192.168.1.123:3306/databasename --username root --password 12345678

    mysql 到 hdfs

    sqoop import--connect jdbc:mysql://192.168.1.123:3306/databasename--username root--password 12345678--table tablename--target-dir /hadoopDir/--fields-terminalted-by ''-m 1--check-column id--last-value num--incremental append

    --connect : 數據庫的 JDBC URL,后面的 databasename 想要連接的數據庫名稱

    --table : 數據庫表

    --username : 數據庫用戶名

    --password : 數據庫密碼

    --target-dir : HDFS 目標目錄

    --fields-terminated-by :數據導入后每個字段之間的分隔符

    -m :mapper 的并發數量

    --check-column : 指定增量導入時的參考列,這里是 id (主鍵)

    --last-value : 上一次導入的最后一個值

    --incremental append :導入方式為增量

    注意:工作中需要增量同步的場景下,我們就可以使用 --incremental append 以及 --last-value。比如這里我們使用 id 來作為參考列,如果上次同步到了 1000, 這次我們想只同步新的數據,就可以帶上參數 --last-value 1000。

    mysql 到 hive

    使用 imort --create-hive-table

    --create-hive-table -m 1 --connect jdbc:mysql://192.168.1.123:3306/databasename--username root --password 12345678 --table tablename--hive-import --hive-database databasename_hive --hive-overwrite --hive-table tablename_hive

    mysql 到 hbase

    hbase shellcreate_namespace 'database_tmp'create 'database_tmp:table_tmp','info'sqoop import --connect jdbc:mysql://192.168.1.123:3306/databasename--username 'root' --password '12345678' --table 'tablename' --hbase-table 'database_tmp:table_tmp' --hbase-row-key 'id' --column-family 'info'

    首先進入 hbase shell,創建好 namespace 以及 數據庫。databasetmp 位命名空間,tabletmp 為數據庫。

    hdfs 到 mysql

    sqoop export--connect jdbc:mysql://192.168.1.123:3306/databasename--username root--password '12345678' --table tablename--m 1--export-dir /hadoopDir/--input-fields-terminated-by ''--columns="column1,column2"

    --columns : 制定導出哪些列

    hive 到 mysql

    了解 hive 的朋友都知道,hive 的真實數據其實就是 hdfs 磁盤上的數據,所以 hive 到 mysql 的同步操作與 hdfs 到 mysql 的操作類似

    hbase 到 mysql

    目前 Sqoop 沒有提供直接將 hbase 數據同步到 mysql 的操作

    總結: 在 sql to hadoop 和 hadoop to sql 這種數據同步場景,Sqoop 是一個很有效且靈活的工具,大家不妨使用它來從事數據方面的工作。

    總結

    以上是生活随笔為你收集整理的hive sqoop导出 postgresql精度丢失_Mysql 与 hadoop 数据同步(迁移),你需要知道 Sqoop...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。