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

hive表數(shù)據(jù)更新insert overwrite/merge into

這篇具有很好參考價(jià)值的文章主要介紹了hive表數(shù)據(jù)更新insert overwrite/merge into。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

背景:

根據(jù)甲方要求,需要對(duì)大數(shù)據(jù)平臺(tái)指定表(hive、impala表)的歷史數(shù)據(jù)[2021-01-01至2023-03-29]指定字段進(jìn)行批量更新,然后把表同步到Oracle。先更新大數(shù)據(jù)平臺(tái)上的表,再把更新完成的表同步到Oracle。hive有8張表更新,其中4張大表【分區(qū)表】(數(shù)據(jù)量分別為:1038738976、260958144、25860509、2867005),另外4張小表(幾萬(wàn)、二十幾萬(wàn)的樣子)。

一、小表更新,不用按月\按分區(qū)更新,直接全量更新。

insert overwrite table 表a (字段1,字段2,...,字段n)
select 
字段1,字段2,...,
nvl(t2.projectbelong,t1.projectbelong) projectbelong,
...,
字段n
from 表a t1
left join 表b t2 on t1.root_item_code=t2.desc1;

二、大表更新,拿其中一張表舉例:按月\按分區(qū)更新

方法一:

insert overwrite table 表1 partition (date_month = '2021-01',date_day,org_code) 
select 
字段1,字段2,...,
nvl(t2.projectbelong,t1.projectbelong) projectbelong,
...,
字段n,
--t1.date_month,
t1.date_day,
t1.org_code
from (select * from 表1 where date_month = '2021-01')  t1
left join 表2 t2 on t1.root_item_code=t2.desc1;

替換date_month日期即可。

方法二:

使用impala外部命令:impala-shell

1、創(chuàng)建impala.sql腳本,內(nèi)容如下:

Linux上,使用vim:

vim impala.sql

?寫(xiě)入以下內(nèi)容:

insert overwrite table 表1 partition (date_month = '${var:CURR_TIME}',date_day,org_code) 
select 
字段1,字段2,...,
nvl(t2.projectbelong,t1.projectbelong) projectbelong,
...,
字段n,
--t1.date_month,
t1.date_day,
t1.org_code
from (select * from 表1 where date_month = '${var:CURR_TIME}')  t1
left join 表2 t2 on t1.root_item_code=t2.desc1;

2、impala外部命令:

impala-shell -f impala.sql -d tianma_bi --var CURR_TIME='2021-01';

3、多個(gè)月份,使用vim命令創(chuàng)建bash文件:impala.sh

impala-shell -f impala.sql -d tianma_bi --var CURR_TIME='2021-01';
impala-shell -f impala.sql -d tianma_bi --var CURR_TIME='2021-02';
impala-shell -f impala.sql -d tianma_bi --var CURR_TIME='2021-03';

4、執(zhí)行sh文件:

sh impala.sh

更新總結(jié):m-分鐘、s-秒
1、百萬(wàn)級(jí)表數(shù)據(jù)總量:500萬(wàn),更新用時(shí)約20s
2、千萬(wàn)級(jí)表數(shù)據(jù)總量:2500萬(wàn),更新用時(shí)約1m
3、億級(jí)表數(shù)據(jù)總量:分區(qū)更新
50萬(wàn),更新用時(shí)約17s
100萬(wàn),更新用時(shí)約32s
500萬(wàn),更新用時(shí)約2m10s
1000萬(wàn),更新用時(shí)約5m
1500萬(wàn),更新用時(shí)約6m
2000萬(wàn),更新用時(shí)約6m30s
5000萬(wàn),更新用時(shí)約16m
7500萬(wàn),更新用時(shí)約22m
根據(jù)以上,估算1億數(shù)據(jù)更新用時(shí)約35m

方法三:也可使用merge into

說(shuō)明:Hive在2.2版本之后開(kāi)始支持Merge操作,并且Merge只能在支持ACID的表上執(zhí)行。低版本的hive中有很多函數(shù)或者語(yǔ)句不支持使用,比如merge into

舉個(gè)例子:

MERGE INTO merge_data.transactions AS T 
USING merge_data.merge_source AS S
ON T.ID = S.ID and T.tran_date = S.tran_date
WHEN MATCHED AND (T.TranValue != S.TranValue AND S.TranValue IS NOT NULL) THEN UPDATE SET
     TranValue = S.TranValue
    ,last_update_user = 'merge_update'
WHEN MATCHED AND S.TranValue IS NULL THEN DELETE
WHEN NOT MATCHED THEN INSERT VALUES (
    S.ID
    , S.TranValue
    , 'merge_insert'
    , S.tran_date
);

建議使用merge into,效率更快一些。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473102.html

到了這里,關(guān)于hive表數(shù)據(jù)更新insert overwrite/merge into的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 第3.1章:StarRocks數(shù)據(jù)導(dǎo)入--Insert into

    第3.1章:StarRocks數(shù)據(jù)導(dǎo)入--Insert into

    Insert Into是我們?cè)贛ySQL中常用的導(dǎo)入方式,StarRocks同樣也支持使用Insert into的方式進(jìn)行數(shù)據(jù)導(dǎo)入,并且每次insert into操作都是一次完整的導(dǎo)入事務(wù)。 在StarRocks中,Insert的語(yǔ)法和MySQL等數(shù)據(jù)庫(kù)的語(yǔ)法類(lèi)似,具體可以參考官網(wǎng)文檔: Insert Into 導(dǎo)入 @ InsertInto @ StarRocks Docs https://docs.s

    2024年02月08日
    瀏覽(24)
  • SQL 數(shù)據(jù)操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 語(yǔ)句詳解

    SQL 數(shù)據(jù)操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 語(yǔ)句詳解

    SELECT INTO 語(yǔ)句將數(shù)據(jù)從一個(gè)表復(fù)制到一個(gè)新表中。 新表將按照在舊表中定義的列名和類(lèi)型創(chuàng)建。您可以使用 AS 子句創(chuàng)建新的列名。 以下 SQL 語(yǔ)句創(chuàng)建 Customers 的備份副本: 以下 SQL 語(yǔ)句使用 IN 子句將表復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)中的新表中: 以下 SQL 語(yǔ)句僅復(fù)制一些列到新表中:

    2024年02月05日
    瀏覽(31)
  • 第3.1章:StarRocks數(shù)據(jù)導(dǎo)入——Insert into 同步模式

    第3.1章:StarRocks數(shù)據(jù)導(dǎo)入——Insert into 同步模式

    ? ?在StarRocks中,insert的語(yǔ)法和mysql等數(shù)據(jù)庫(kù)的語(yǔ)法類(lèi)似,并且每次insert into操作都是一次完整的導(dǎo)入事務(wù)。 ?主要的 insertInto 命令包含以下兩種: insert into tbl select ... insert into tbl (col1, col2, ...) values (1, 2, ...), (1,3, ...); ? 其中第二種命令僅用于demo,不要使用在測(cè)試或生產(chǎn)環(huán)境

    2024年02月21日
    瀏覽(23)
  • Apache Doris (二十三) :Doris 數(shù)據(jù)導(dǎo)入(一)Insert Into

    目錄 1.?語(yǔ)法及參數(shù) 2.?案例 ????3.?注意事項(xiàng) 3.1. 關(guān)于插入數(shù)據(jù)量

    2024年02月13日
    瀏覽(27)
  • spark-sql: insert overwrite分區(qū)表問(wèn)題

    spark-sql: insert overwrite分區(qū)表問(wèn)題

    用spark-sql,insert overwrite分區(qū)表時(shí)發(fā)現(xiàn)兩個(gè)比較麻煩的問(wèn)題: 從目標(biāo)表select出來(lái)再insert overwrite目標(biāo)表時(shí)報(bào)錯(cuò):Error in query: Cannot overwrite a path that is also being read from. 從其他表select出來(lái)再insert overwrite目標(biāo)表時(shí),其他分區(qū)都被刪除了. 印象中這兩個(gè)問(wèn)題也出現(xiàn)過(guò),但憑經(jīng)驗(yàn)和感覺(jué),

    2024年02月11日
    瀏覽(21)
  • openGauss學(xué)習(xí)筆記-11 openGauss 簡(jiǎn)單數(shù)據(jù)管理-INSERT INTO語(yǔ)句

    openGauss學(xué)習(xí)筆記-11 openGauss 簡(jiǎn)單數(shù)據(jù)管理-INSERT INTO語(yǔ)句

    在創(chuàng)建一個(gè)表后,表中并沒(méi)有數(shù)據(jù),使用這個(gè)表之前,需要向表中插入數(shù)據(jù)。INSERT INTO語(yǔ)句用于向表中插入新記錄。該語(yǔ)句可以插入一行數(shù)據(jù)也可以同時(shí)插入多行數(shù)據(jù)。 11.1 語(yǔ)法格式 11.2 參數(shù)說(shuō)明 table_name 要插入數(shù)據(jù)的目標(biāo)表名。 取值范圍:已存在的表名。 column_name 目標(biāo)表中

    2024年02月17日
    瀏覽(20)
  • GaussDB數(shù)據(jù)庫(kù)中的MERGE INTO介紹

    GaussDB數(shù)據(jù)庫(kù)中的MERGE INTO介紹

    一、前言 二、GaussDB MERGE INTO 語(yǔ)句的原理概述 1、MERGE INTO 語(yǔ)句原理 2、MERGE INTO 的語(yǔ)法 3、語(yǔ)法解釋 三、GaussDB MERGE INTO 語(yǔ)句的應(yīng)用場(chǎng)景 四、GaussDB MERGE INTO 語(yǔ)句的示例 1、示例場(chǎng)景舉例 2、示例實(shí)現(xiàn)過(guò)程 1)創(chuàng)建兩個(gè)實(shí)驗(yàn)表,并初始化測(cè)試數(shù)據(jù) 2)更新 target_table 中的銷(xiāo)售數(shù)據(jù),

    2024年01月21日
    瀏覽(19)
  • insert into select 語(yǔ)法使用

    INSERT INTO SELECT語(yǔ)句:從一個(gè)表復(fù)制數(shù)據(jù),然后把數(shù)據(jù)插入到一個(gè)已存在的表中。 將一個(gè)table1的數(shù)據(jù)的部分字段復(fù)制到table2中,或者將整個(gè)table1復(fù)制到table2中, 這時(shí)候我們就要使用SELECT INTO 和 INSERT INTO SELECT 表復(fù)制語(yǔ)句了。 1.INSERT INTO SELECT語(yǔ)句 語(yǔ)句形式為:Insert into Table2(fie

    2024年02月16日
    瀏覽(31)
  • MySQL 中 INSERT INTO 的使用詳解

    MySQL 是一個(gè)非常流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有高效和可擴(kuò)展性等特點(diǎn)。在 MySQL 數(shù)據(jù)庫(kù)中,INSERT INTO 是一種用于將新行插入表中的 SQL 命令。它是 MySQL 最基本、最常用的語(yǔ)句之一,也是許多應(yīng)用程序的核心功能之一。本文將介紹如何正確地使用 INSERT INTO,以及如何處理異

    2024年02月15日
    瀏覽(31)
  • Apache Doris 數(shù)據(jù)導(dǎo)入:Insert Into語(yǔ)句;Binlog Load;Broker Load;HDFS Load;Spark Load;例行導(dǎo)入(Routine Load)

    Apache Doris 數(shù)據(jù)導(dǎo)入:Insert Into語(yǔ)句;Binlog Load;Broker Load;HDFS Load;Spark Load;例行導(dǎo)入(Routine Load)

    Doris 提供多種數(shù)據(jù)導(dǎo)入方案,可以針對(duì)不同的數(shù)據(jù)源進(jìn)行選擇不同的數(shù)據(jù)導(dǎo)入方式。Doris支持各種各樣的數(shù)據(jù)導(dǎo)入方式:Insert Into、json格式數(shù)據(jù)導(dǎo)入、Binlog Load、Broker Load、Routine Load、Spark Load、Stream Load、S3 Load,下面分別進(jìn)行介紹。 注意: Doris 中的所有導(dǎo)入操作都有原子性保

    2024年02月21日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包