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

歡迎訪問 生活随笔!

生活随笔

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

数据库

【Sqoop】从MySQL同步数据到Hive的操作参数解析

發布時間:2025/3/15 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Sqoop】从MySQL同步数据到Hive的操作参数解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參數解析:

必選參數

--connect :連接的mysql數據庫的jdbc信息

--username:mysql數據庫的登錄賬戶

--password:mysql數據庫的登錄密碼

--table: 關系數據庫表名

?--hive-import: 從關系型數據庫向hive中導入數據的標志

可選參數

--as-testfile: 將數據導入一個普通文本文件中

--as-sequencefile:將數據導入一個

--as-avrodatafile:將數據導入一個Avro數據文件中

--columns<cl,col,col,...> 指定要導入的字段值

-m或--num-mappers:確定導入數據時啟動的并行map數,默認為4

--target-dir<dir>: 指定導入數據的hdfs路徑--目標路徑

--query <selectstatement>:從查詢結果中導入數據,與--target-dir共用

--hive-table:導入的hive表

--hive-database:導入的hive庫

--where :從關系型數據庫導入數據時的查詢條件,接where的查詢條件。例如:‘–where id<100’

--null-non-string<null-string>:指定非字符串類型為null時的替代字符

--null-string<null-string>:指定字符串類型為null時的替代字符

--hive-drop-import-delims:導入數據到hive時,屏蔽數據中\n,\r和\01等類型的特殊字符

--hive-overwrite:導入前清理hive表中所有數據

--hive-partition-key<k> : hive表的分區字段,字段類型默認為string

--hive-partition-value<v>:與--hive-partition-key同時使用,指定導入的分區值

--fields-terminated-by <f> :指定導入數據的字段分隔符

--lines-terminated-by <l>:指定導入數據的行分隔符

--delete-target-dir:若指定的目錄存在,需要先刪除

--split-by:指定數據集分片的字段

?

解析??

原理

sqoop將數據從關系型數據庫mysql導入到hadoop數據庫hive,整體步驟分為兩步:

1.將mysql中數據導入hadoop的hdfs上

2.將hadoop的hdfs上的數據加載到hive數據庫中

?使用方法:

根據sqoop的工作原理,使用sqoop導入數據,主要有兩種方法:

方法1(直接導入):將mysql數據直接導入hive表中

方法2(導入hdfs):先將mysql數據導入hdfs上,之后再將hdfs數據加載到hive中

直接導入典型示例:

sqoop import --connect jdbc:mysql://localhost:3306/bdp?--username root --password bdp?--table emp --hive-import?--hive-database test --hive-table EMP --where 'id>10' --hive-partition-key?time --hive-partition-value '2018-05-18'?--null-string '\\N' --null-non-string '\\N' --fields-terminated-by ',' --lines-terminated-by '\n' -m 1

?導入hdfs典型示例:

導入數據到hdfs:

sqoop import ?--connect jdbc:mysql://localhost:3306/bdp?--username root --password bdp?--table emp --query 'select * from emp? inner join? user on emp.id=user.id where id>10' --split-by id --target-dir /user/data/mysql/emp -m 1

加載數據到hive表:

load data inpath '/user/data/mysql/emp ' into table test.EMP2

分析:

直接導入適用于將單個表中部分數據或所有數據導入hive表中的情況。

導入hdfs適用于將組合數據集導入hive表中的情況。--query參數可以對多個mysql表join后的數據集進行篩選,該方法可以將指定的數據集(可能涉及多張表)導入hdfs,并不限于單張表。

?

注意事項:

1.注意字段分隔符和行分隔符的使用,必須與目標hive表一致,否則將出現,數據導入成功,但無法正常加載到hive表(hive表中字段值為null)

2.–columns接的字段時mysql表的字段,要求這些字段要和Hive表中的字段對應,數據類型要對應,否則會出現異常

3.--hive-table中只支持一個靜態分區,匹配的分區參數為--hive-partition-key和--hive-partition-value。多分區時,對應的參數應該為--hcatalog-table,--hcatalog-database,--hcatalog-partition-keys和--hcatalog-partition-values

4.hive沒有rowkey,sqoop-hive只能追加或者清空后再添加,不能update

總結

以上是生活随笔為你收集整理的【Sqoop】从MySQL同步数据到Hive的操作参数解析的全部內容,希望文章能夠幫你解決所遇到的問題。

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