一、創(chuàng)建一張Hive測(cè)試表
create table test_oracle_hive(
id_code string
,phone_code string
,status string
,create_time string
) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
創(chuàng)建分區(qū)字段partition_date,指定分隔符“,”
二、編寫(xiě)Sqoop數(shù)據(jù)同步命令
我這里使用的是shell腳本的方式:
#!/bin/bash
export LANG="en_US.UTF-8"
part_date=etl_date=`date "-d +0 day" "+%Y%m%d"`
echo "當(dāng)前分區(qū)時(shí)間為: $part_date"
sqoop import -D mapred.job.queue.name=root.realtime_queue --connect jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/testdb --username test --password test01 --table APP.TEST_ORACLE_HIVE_TWO --hive-import --hive-partition-key partition_date --hive-partition-value $part_date --hive-table xxx.test_data_oracle_hive --fields-terminated-by ',' --null-string '\\N' --null-non-string '\\N' --hive-overwrite -m 1
if [ $? -eq 0 ]; then
echo ">>>>>>>>>>>>>Oracle同步Hive數(shù)據(jù)庫(kù)-執(zhí)行成功!"
else
echo ">>>>>>>>>>>>>Oracle同步Hive數(shù)據(jù)庫(kù)-執(zhí)行失敗!"
fi
命令相關(guān)屬性說(shuō)明:
- --connect:連接Oracle數(shù)據(jù)庫(kù)的URL,例如jdbc:oracle:thin:@219.216.110.120:1521:orcl。
- --username:連接Oracle數(shù)據(jù)庫(kù)的用戶(hù)名,例如TEST1。
- --password:連接Oracle數(shù)據(jù)庫(kù)的密碼,例如test1。
- --table:要導(dǎo)入的Oracle表名,例如TEST1。
- --hive-table:在Hive中要?jiǎng)?chuàng)建或覆蓋的表名,例如test1_test1。
- --fields-terminated-by:指定字段分隔符,例如'\t'(制表符)。
- --hive-import:?jiǎn)⒂肏ive導(dǎo)入。
- --hive-overwrite:在導(dǎo)入數(shù)據(jù)時(shí)覆蓋已存在的Hive表。
- --null-string:指定空值對(duì)應(yīng)的字符串,例如'NULL'。
- --null-non-string:指定非空值對(duì)應(yīng)的字符串,例如'NULL'。
三,執(zhí)行腳本命令
我這里是使用的azkaban做的任務(wù)執(zhí)行,也可以根據(jù)自己所需,sh xxx.sh執(zhí)行腳本,如圖:
任務(wù)執(zhí)行完成,發(fā)現(xiàn)數(shù)據(jù)有亂碼:
分區(qū)時(shí)間是這樣取值的:
在服務(wù)器單獨(dú)執(zhí)行命令,發(fā)現(xiàn)是文件生成的時(shí)候亂碼的:
四、問(wèn)題修改
然后,檢查命令沒(méi)問(wèn)題后,發(fā)現(xiàn)我使用的文本編輯器 NotePad++ 在編寫(xiě)命令時(shí),
是在Windows(CR LF) 模式下的,轉(zhuǎn)換為 Unix(LF) ,如圖:
然后,重新執(zhí)行腳本,數(shù)據(jù)就恢復(fù)正常了
五、Sqoop常用命令
導(dǎo)入數(shù)據(jù):
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --target-dir /user/hadoop/data
導(dǎo)出數(shù)據(jù):
sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --export-dir /user/hadoop/data
查詢(xún)Job列表:
sqoop job --list
查詢(xún)Job詳細(xì)信息:
sqoop job --show jobname
執(zhí)行Job文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-758750.html
sqoop job --exec jobname
刪除Job文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758750.html
sqoop job --delete jobname
到了這里,關(guān)于使用Sqoop命令從Oracle同步數(shù)據(jù)到Hive,修復(fù)數(shù)據(jù)亂碼 %0A的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!