本文介紹Sqoop如何以EMR叢集的方式讀寫OSS-HDFS服務的資料。
前提條件
已建立EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的叢集,並在建立時選擇了Sqoop。具體步驟,請參見建立叢集。
已開通並授權訪問OSS-HDFS服務。具體操作,請參見開通並授權訪問OSS-HDFS服務。
操作步驟
登入EMR叢集。
單擊建立的EMR叢集。
單擊節點管理頁簽,然後單擊節點群組左側的。
單擊ECS ID。在ECS執行個體頁面,單擊執行個體ID右側的遠端連線。
如果您希望使用SSH方式(SSH金鑰組或SSH密碼)在Windows和Linux環境中登入叢集,請參見登入叢集。
將OSS-HDFS資料匯入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>
參數說明
參數
是否必選
說明
dburi
必選
資料庫的訪問連結,例如
jdbc:mysql://192.168.xxx.xxx:3306/
。dbname
必選
資料庫的名稱。
username
必選
資料庫登入使用者名稱。
password
必選
資料庫登入密碼。
tablename
必選
MySQL表的名稱。
oss-dir
必選
讀取或寫入OSS-HDFS服務指定路徑下的資料,例如
oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
。oss-tmpdir
可選
臨時寫入目錄。指定mode為append模式時,需要指定該參數。
採用append模式後,Sqoop會先將資料匯入臨時目錄,然後將檔案重新命名為正常目標目錄。如果目標目錄已經存在於HDFS中,則Sqoop拒絕匯入並覆蓋該目錄的內容。
col
可選
增量匯入情境的檢查列。
mode
可選
增量匯入模式,支援append和lastmodified兩種模式。
append模式:基於遞增列的增量資料匯入。
lastmodified模式:基於時間列的增量資料匯入。
value
可選
指定上次增量匯入的檢查列的最大值。
format
可選
檔案儲存體的格式。取值為avrodatafile、sequencefile、textfile(預設值)、parquetfile。
count
可選
指定MapReduce的任務數。
使用樣本
將OSS-HDFS服務examplebucket中指定路徑下的資料匯入MySQL中的資料庫表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