国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL中的業(yè)務(wù)數(shù)據(jù)該如何正確導(dǎo)入到Hive中 - Sqoop

這篇具有很好參考價(jià)值的文章主要介紹了MySQL中的業(yè)務(wù)數(shù)據(jù)該如何正確導(dǎo)入到Hive中 - Sqoop。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

水善利萬(wàn)物而不爭(zhēng),處眾人之所惡,故幾于道??

目錄


? 1. 使用Sqoop腳本將MySQL中的數(shù)據(jù)遷移到HDFS

? 2. 在Hive中建立與之對(duì)應(yīng)的表

? 3. 將HDFS中的數(shù)據(jù)load到 Hive 數(shù)倉(cāng)的ODS層的表中


1 . 使用Sqoop 將 MySQL中的數(shù)據(jù)導(dǎo)入到HDFS上

#! /bin/bash

sqoop=/opt/module/sqoop/bin/sqoop
#do_date默認(rèn)為前一天的時(shí)間
do_date=`date -d '-1 day' +%F`
#如果第二個(gè)參數(shù)沒(méi)有指定導(dǎo)入哪天的數(shù)據(jù),默認(rèn)為前一天的數(shù)據(jù)
if [[ -n "$2" ]]; then
	do_date=$2
fi

import_data(){
$sqoop import \
--connect jdbc:mysql://hadoop101:3306/gmall \
--username root \ 
--password 000000 \
#指定導(dǎo)出數(shù)據(jù)的目錄路徑
--target-dir /origin_data/gmall/db/$1/$do_date \
#如果該目錄已經(jīng)存在,則刪除該目錄。設(shè)定此參數(shù)可以保證每次導(dǎo)入數(shù)據(jù)不會(huì)覆蓋之前的數(shù)據(jù)。
--delete-target-dir \
#使用 SQL 查詢(xún)語(yǔ)句導(dǎo)入數(shù)據(jù),有的sql會(huì)加一個(gè)where 1=1是為了滿(mǎn)足語(yǔ)法
--query "$2 and  \$CONDITIONS" \
#Sqoop 并行的任務(wù)數(shù),默認(rèn)值為 4。因?yàn)樗讓舆\(yùn)行的實(shí)際上是MR中的Map,沒(méi)有Reduce,默認(rèn)是4個(gè)MapTask。數(shù)據(jù)導(dǎo)入時(shí),建議并行度設(shè)為1
--num-mappers 1 \
--fields-terminated-by '\t' \
#啟用壓縮
--compress \
#設(shè)置壓縮算法-lzop壓縮
--compression-codec lzop \
#Hive中的Null在底層是以\N來(lái)存儲(chǔ)的,而MySQL中的NULL就是NULL,為了導(dǎo)入數(shù)據(jù)的一致性
--null-string '\\N' \
--null-non-string '\\N'
#導(dǎo)入后立即建立lzo索引
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /origin_data/gmall/db/$1/$do_date
}

import_activity_order(){
  import_data activity_order "select
								id,
								activity_id,
								order_id,
								create_time
							  from activity_order
							  where date_format(create_time,'%Y-%m-%d')='$do_date'"
}
import_base_region(){
  import_data base_region "select
							  id,
							  region_name
							from base_region
							where 1=1"
}
case $1 in
  "order_info")
     import_order_info
;;
  "base_category1")
     import_base_category1
;;
# 導(dǎo)入指定的表,省略了,所有的表都應(yīng)該列出來(lái)
"first")
   import_base_category1
   import_base_category2
   import_base_category3
   import_order_info
   #......
   #所有的表,因?yàn)榈谝淮螌?dǎo)入為全量導(dǎo)入
;;
"all")
   import_comment_info
   import_coupon_use
   #以后每次是增量導(dǎo)入,有些表就不用導(dǎo)入了
;;
esac
  • 使用示例:mysql_to_hdfs.sh all 2021-02-01
  • 導(dǎo)出的數(shù)據(jù)用lzo壓縮,并且在導(dǎo)出每一張表后,都立即生成lzo索引文件,因?yàn)閘zo文件的切片依賴(lài)其索引文件,存放在指定的路徑下

將mysql數(shù)據(jù)導(dǎo)入hive,大數(shù)據(jù),hive,mysql,sqoop,數(shù)據(jù)遷移



2. 在Hive中建立與之對(duì)應(yīng)的表

常用的數(shù)據(jù)類(lèi)型有下面這幾個(gè):

?string - - - 字符型
?bigint - - - 數(shù)值類(lèi)型
?decimal(10,2) - - - 商品的金額
?decimal(16,2) - - - 支付、退款金額

??數(shù)倉(cāng)中一般創(chuàng)建的都是外部表,防止數(shù)據(jù)被誤刪(因?yàn)檫@個(gè)表的數(shù)據(jù)實(shí)際上是存儲(chǔ)在HDFS上,并不屬于Hive的數(shù)據(jù)集,所以當(dāng)我們刪除這個(gè)外部表的時(shí)候,只會(huì)刪除它在Hive元數(shù)據(jù)中的記錄,而不會(huì)刪除HDFS上的數(shù)據(jù)文件,因此比較安全)

drop table if exists You_HiveTable_Name;
CREATE EXTERNAL TABLE You_HiveTable_Name (
`field_name1` string,
`field_name2` bigint,
`field_name3` decimal(10,2)
)
PARTITIONED BY (`dt` string) --分區(qū)字段
row format delimited fields terminated by '\t' --指定列分割符
STORED AS
  INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
  OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/warehouse/gmall/ods/ods_start_log';  --外部表的存儲(chǔ)路徑,一建表這個(gè)路徑就會(huì)被創(chuàng)建

??以上SQL是創(chuàng)建一個(gè)外部表,支持lzo壓縮,也就是聲明這個(gè)表要讀取的是lzo文件,比如我進(jìn)行一個(gè)查詢(xún),(如果是MapReduce)實(shí)際上底層是通過(guò)MR去讀數(shù)據(jù),然后將結(jié)果輸出,MR讀數(shù)據(jù)會(huì)用到FileInputFormat,那么用LzoTextInputFormat就可以讀到數(shù)據(jù)了。
??Hive - Lzo壓縮的詳細(xì)介紹及配置 - Hive官網(wǎng)



3. 將HDFS中的數(shù)據(jù) load 到 Hive 數(shù)倉(cāng)的ODS層的表中

#!/bin/bash

APP=gmall
hive=/opt/module/hive/bin/hive

# 如果是輸入的日期按照取輸入日期;如果沒(méi)輸入日期取當(dāng)前時(shí)間的前一天
if [ -n "$2" ] ;then
    do_date=$2
else 
    do_date=`date -d "-1 day" +%F`
fi

sql1="
load data inpath '/origin_data/$APP/db/order_info/$do_date' OVERWRITE into table ${APP}.ods_order_info partition(dt='$do_date');

load data inpath '/origin_data/$APP/db/order_detail/$do_date' OVERWRITE into table ${APP}.ods_order_detail partition(dt='$do_date');
"
#每張表都要load,這里省略了

sql2=" 
load data inpath '/origin_data/$APP/db/base_province/$do_date' OVERWRITE into table ${APP}.ods_base_province;

load data inpath '/origin_data/$APP/db/base_region/$do_date' OVERWRITE into table ${APP}.ods_base_region;
"
case $1 in
"first"){
    $hive -e "$sql1$sql2"
};;
"all"){
    $hive -e "$sql1"
};;
esac

??這里的兩個(gè)sql字符串的意思是:有的表只需要在第一次導(dǎo)的時(shí)候?qū)耄瑢?dǎo)入后基本不改變,所以以后就不用導(dǎo)入,所以分開(kāi)了。

將mysql數(shù)據(jù)導(dǎo)入hive,大數(shù)據(jù),hive,mysql,sqoop,數(shù)據(jù)遷移

到Hive中查看表數(shù)據(jù):
將mysql數(shù)據(jù)導(dǎo)入hive,大數(shù)據(jù),hive,mysql,sqoop,數(shù)據(jù)遷移文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-677577.html


至此,業(yè)務(wù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)已經(jīng)從MySQL導(dǎo)入到了Hive中

到了這里,關(guān)于MySQL中的業(yè)務(wù)數(shù)據(jù)該如何正確導(dǎo)入到Hive中 - Sqoop的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Sqoop】MySQL表導(dǎo)入Hive

    用 Sqoop 將 MySQL 指定數(shù)據(jù)庫(kù)指定的表導(dǎo)入Hive 的指定數(shù)據(jù)庫(kù)

    2024年02月03日
    瀏覽(21)
  • 基于Hive的天氣情況大數(shù)據(jù)分析系統(tǒng)(通過(guò)hive進(jìn)行大數(shù)據(jù)分析將分析的數(shù)據(jù)通過(guò)sqoop導(dǎo)入到mysql,通過(guò)Django基于mysql的數(shù)據(jù)做可視化)

    基于Hive的天氣情況大數(shù)據(jù)分析系統(tǒng)(通過(guò)hive進(jìn)行大數(shù)據(jù)分析將分析的數(shù)據(jù)通過(guò)sqoop導(dǎo)入到mysql,通過(guò)Django基于mysql的數(shù)據(jù)做可視化)

    Hive介紹: Hive是建立在Hadoop之上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)架構(gòu),它提供了類(lèi)似于SQL的語(yǔ)言(HQL),可以對(duì)大規(guī)模數(shù)據(jù)集進(jìn)行查詢(xún)和分析。通過(guò)Hive,我們可以在分布式存儲(chǔ)系統(tǒng)中進(jìn)行復(fù)雜的數(shù)據(jù)處理和分析。 Sqoop簡(jiǎn)介: Sqoop是一個(gè)用于在A(yíng)pache Hadoop和關(guān)系型數(shù)據(jù)庫(kù)之間傳輸數(shù)據(jù)的工具。

    2024年04月13日
    瀏覽(21)
  • sqoop(DataX)-MySQL導(dǎo)入HIVE時(shí)間格問(wèn)題

    用公司的大數(shù)據(jù)平臺(tái)(DataX)導(dǎo)數(shù),已經(jīng)開(kāi)發(fā)上線(xiàn)一個(gè)多月的一批報(bào)表,突然有同事說(shuō)有個(gè)報(bào)表數(shù)據(jù)不準(zhǔn)。出在時(shí)間字段上。 分析: 1、先看了原數(shù)據(jù)MySQL字段類(lèi)型為datetime,目標(biāo)字段為timestamp類(lèi)型; 2、經(jīng)發(fā)現(xiàn)所有時(shí)間的差距都是8小時(shí),懷疑是因?yàn)闀r(shí)區(qū)轉(zhuǎn)換的原因; 3、對(duì)比其他

    2024年02月02日
    瀏覽(21)
  • Sqoop數(shù)據(jù)導(dǎo)入到Hive表的最佳實(shí)踐

    Sqoop數(shù)據(jù)導(dǎo)入到Hive表的最佳實(shí)踐

    將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫(kù)導(dǎo)入到Hive表是大數(shù)據(jù)領(lǐng)域中的常見(jiàn)任務(wù)之一,Sqoop是一個(gè)強(qiáng)大的工具,可以幫助實(shí)現(xiàn)這一目標(biāo)。本文將提供Sqoop數(shù)據(jù)導(dǎo)入到Hive表的最佳實(shí)踐,包括詳細(xì)的步驟、示例代碼和最佳建議,以確保數(shù)據(jù)導(dǎo)入過(guò)程的高效性和可維護(hù)性。 Sqoop是一個(gè)開(kāi)源工具,用于

    2024年01月23日
    瀏覽(24)
  • Sqoop【實(shí)踐 01】Sqoop1最新版 MySQL與HDFS\Hive\HBase 核心導(dǎo)入導(dǎo)出案例分享+多個(gè)WRAN及Exception問(wèn)題處理(一篇即可學(xué)會(huì)在日常工作中使用Sqoop)

    1?? 查看所有命令【 sqoop help 】 2?? 查看某條命令的具體使用方法【 sqoop help COMMAND 】 查詢(xún)MySQL所有數(shù)據(jù)庫(kù),通常用于 Sqoop 與 MySQL 連通測(cè)試: 【具體參數(shù)可以使用 sqoop help list-databases 查看】實(shí)例: 結(jié)果: 【2個(gè)】WARN處理: 查詢(xún)指定數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表,這里要注意一下

    2024年03月18日
    瀏覽(27)
  • 使用sqoop從Hive導(dǎo)出數(shù)據(jù)到MySQL

    使用sqoop從Hive導(dǎo)出數(shù)據(jù)到MySQL

    1、啟動(dòng)hadoop:start-all.sh。 2、啟動(dòng)mysql:support-files/mysql.server start。 3、啟動(dòng)hive:hive。 4、在hive中創(chuàng)建表。 (學(xué)生信息:學(xué)號(hào)xh,姓名xm)xsxx: create table bigdata03.xsxx ( xh String, xm String ) row format delimited fields terminated by \\\',\\\'stored as textfile; (課程信息:課程號(hào)kch,學(xué)號(hào)xh,課程名稱(chēng)

    2024年02月11日
    瀏覽(24)
  • 大數(shù)據(jù)bug-sqoop(二:sqoop同步mysql數(shù)據(jù)到hive進(jìn)行字段限制。)

    新增加三個(gè)參數(shù) –query “${sql}” 這個(gè)參數(shù)添加對(duì)應(yīng)表的sql語(yǔ)句。注意結(jié)尾必須添加 $CONDITIONS ,必須添加where 條件,如果沒(méi)有where條件,寫(xiě)成where 1=1。案例如下: \\\"select id,key_id,key_type,\\\'\\\' as encryption_cert_chain,device_type,account_id_hash,user_identifier,user_id,request_id,device_id,vehicle_id,vehicl

    2024年02月12日
    瀏覽(26)
  • Sqoop將hive處理的數(shù)據(jù)導(dǎo)出到MySQL

    Sqoop將hive處理的數(shù)據(jù)導(dǎo)出到MySQL

    目錄 部署前提 一、創(chuàng)建數(shù)據(jù)上傳到hive中 創(chuàng)建學(xué)生表數(shù)據(jù):vim stu.txt 創(chuàng)建課程表數(shù)據(jù):vim course.txt 在hive中創(chuàng)建學(xué)生表和課程表: 上傳數(shù)據(jù)到hdfs上的hive中: 二、處理hive中的數(shù)據(jù) 查詢(xún)學(xué)生姓名和課程信息,創(chuàng)建結(jié)果表stu_result: 插入數(shù)據(jù): 三、在mysql中創(chuàng)建結(jié)果表 四、將hive中處

    2024年02月03日
    瀏覽(25)
  • Sqoop導(dǎo)出hive/hdfs數(shù)據(jù)到mysql中---大數(shù)據(jù)之Apache Sqoop工作筆記006

    Sqoop導(dǎo)出hive/hdfs數(shù)據(jù)到mysql中---大數(shù)據(jù)之Apache Sqoop工作筆記006

    然后我們看看數(shù)據(jù)利用sqoop,從hdfs hbase中導(dǎo)出到mysql中去 ? 看看命令可以看到上面這個(gè) ? 這里上面還是mysql的部分,然后看看 下面--num-mappers 這個(gè)是指定mapper數(shù) 然后下面這個(gè)export-dir這里是,指定hdfs中導(dǎo)出數(shù)據(jù)的目錄 比如這里指定的是hive的一個(gè)表/user/hive/warehouse/sttaff_hive 然后下

    2024年02月03日
    瀏覽(102)
  • 大數(shù)據(jù) | (五)通過(guò)Sqoop實(shí)現(xiàn)從MySQL導(dǎo)入數(shù)據(jù)到HDFS

    大數(shù)據(jù) | (五)通過(guò)Sqoop實(shí)現(xiàn)從MySQL導(dǎo)入數(shù)據(jù)到HDFS

    各位CSDN的朋友們大家好!這篇文章是在困擾了我三天(甚至更久),經(jīng)過(guò)不斷嘗試與踩坑總結(jié)出來(lái)的通過(guò) Sqoop 從Mysql數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到 Hadoop hdfs 的詳細(xì)筆記與感想,希望能幫助到大家!本篇文章收錄于 初心 的 大數(shù)據(jù) 專(zhuān)欄。 ?? 個(gè)人主頁(yè):初心%個(gè)人主頁(yè) ?? 個(gè)人簡(jiǎn)介:大家

    2024年02月04日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包