Sqoop以EMR集群的方式讀寫OSS-HDFS服務(wù)的數(shù)據(jù)
本文介紹Sqoop如何以EMR集群的方式讀寫OSS-HDFS服務(wù)的數(shù)據(jù)。
前提條件
已創(chuàng)建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群,并在創(chuàng)建時選擇了Sqoop。具體步驟,請參見創(chuàng)建集群。
已開通并授權(quán)訪問OSS-HDFS服務(wù)。具體操作,請參見開通并授權(quán)訪問OSS-HDFS服務(wù)。
操作步驟
登錄EMR集群。
單擊創(chuàng)建的EMR集群。
單擊節(jié)點管理頁簽,然后單擊節(jié)點組左側(cè)的。
單擊ECS ID。在ECS實例頁面,單擊實例ID右側(cè)的遠(yuǎn)程連接。
如果您希望使用SSH方式(SSH密鑰對或SSH密碼)在Windows和Linux環(huán)境中登錄集群,請參見登錄集群。
將OSS-HDFS數(shù)據(jù)導(dǎo)入MySQL。
sudo sqoop import --connect <dburi>/<dbname> --username <username> --password <password> --table <tablename> --target-dir <oss-dir> --temporary-rootdir <oss-tmpdir> --check-column <col> --incremental <mode> --last-value <value> -as <format> -m <count>
參數(shù)說明
參數(shù)
是否必選
說明
dburi
必選
數(shù)據(jù)庫的訪問鏈接,例如
jdbc:mysql://192.168.xxx.xxx:3306/
。dbname
必選
數(shù)據(jù)庫的名稱。
username
必選
數(shù)據(jù)庫登錄用戶名。
password
必選
數(shù)據(jù)庫登錄密碼。
tablename
必選
MySQL表的名稱。
oss-dir
必選
讀取或?qū)懭?span id="z68uejxpaoma" class="help-letter-space">OSS-HDFS服務(wù)指定路徑下的數(shù)據(jù),例如
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
。oss-tmpdir
可選
臨時寫入目錄。指定mode為append模式時,需要指定該參數(shù)。
采用append模式后,Sqoop會先將數(shù)據(jù)導(dǎo)入臨時目錄,然后將文件重命名為正常目標(biāo)目錄。如果目標(biāo)目錄已經(jīng)存在于HDFS中,則Sqoop拒絕導(dǎo)入并覆蓋該目錄的內(nèi)容。
col
可選
增量導(dǎo)入場景的檢查列。
mode
可選
增量導(dǎo)入模式,支持append和lastmodified兩種模式。
append模式:基于遞增列的增量數(shù)據(jù)導(dǎo)入。
lastmodified模式:基于時間列的增量數(shù)據(jù)導(dǎo)入。
value
可選
指定上次增量導(dǎo)入的檢查列的最大值。
format
可選
文件存儲的格式。取值為avrodatafile、sequencefile、textfile(默認(rèn)值)、parquetfile。
count
可選
指定MapReduce的任務(wù)數(shù)。
使用示例
將OSS-HDFS服務(wù)examplebucket中指定路徑下的數(shù)據(jù)導(dǎo)入MySQL中的數(shù)據(jù)庫表src_kv。
sqoop import --connect jdbc:mysql://master-1-1/sqoop_test --username root --password password1 --table src_kv -m 1 --target-dir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/tmp/sqoop_kv --as-parquetfile