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

大數(shù)據(jù)分析組件Hive-集合數(shù)據(jù)結(jié)構(gòu)

這篇具有很好參考價值的文章主要介紹了大數(shù)據(jù)分析組件Hive-集合數(shù)據(jù)結(jié)構(gòu)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

Hive是一個基于Hadoop的數(shù)據(jù)倉庫基礎(chǔ)設(shè)施,用于處理大規(guī)模分布式數(shù)據(jù)集。它提供了一個類似于SQL的查詢語言(稱為HiveQL),允許用戶以類似于關(guān)系型數(shù)據(jù)庫的方式查詢和分析存儲在Hadoop集群中的數(shù)據(jù)。

Hive常作為離線數(shù)倉的分析工具,當(dāng)面臨Json數(shù)據(jù)時,Hive需要用到其數(shù)據(jù)結(jié)構(gòu)構(gòu)建出一張Json表才得以操作Json數(shù)據(jù);(Hive4.0推出了Json解析)

一、array數(shù)組類型

數(shù)組是一組具有相同類型的變量的集合。 這些變量稱為數(shù)組的元素,每個數(shù)組元素都有一個編號,編號從零開始。

數(shù)組類型的創(chuàng)建:

drop table if exists test_datatype;
create external table test_datatype(
    ids array<int>,
) comment '數(shù)據(jù)結(jié)構(gòu)測試表'
location 'test/test_datatype';

創(chuàng)建表字段時,使用Array類型需要聲明其泛型,如果在后續(xù)的操作中,向該表字段插入了一個包含string類型的array,Hive 在數(shù)據(jù)加載過程中會根據(jù)目標(biāo)表的聲明進(jìn)行數(shù)據(jù)類型推斷和轉(zhuǎn)換。如果插入的數(shù)組元素與目標(biāo)表聲明的數(shù)據(jù)類型不匹配,Hive 會嘗試進(jìn)行隱式類型轉(zhuǎn)換。在這種情況下,Hive 會嘗試將字符串轉(zhuǎn)換為整數(shù)類型。

Tip:隱式類型轉(zhuǎn)換可能導(dǎo)致數(shù)據(jù)丟失或錯誤。如果類型轉(zhuǎn)換失敗Hive 可能會將其轉(zhuǎn)換為 NULL 值。

以下構(gòu)建一個簡單的array數(shù)組對象:

====查詢語句====
select
       ids,
       `array`(ids[0],ids[6]),
        array_contains(ids,'milet')
from (
     select `array`("aimyon","aimer","vaundy","Ado",1,3.6) as ids
         )t1
         
====執(zhí)行結(jié)果====
ids>>>["aimyon","aimer","vaundy","Ado","1","3.6"]
`array`(ids[0],ids[5])>>>["aimyon",null]
array_contains(ids,'milet')>>> false
  1. Array 類型可以存儲具有相同數(shù)據(jù)類型的元素。這意味著數(shù)組中的每個元素都應(yīng)該是相同的數(shù)據(jù)類型。上述的Hql中使用了string和int類型,但是查詢結(jié)果顯示的都是string類型。
  2. Array類型通過下標(biāo)取出元素,如果下標(biāo)越界,取出的元素為null
  3. array_contains()能夠檢索數(shù)組是否包含該元素,該函數(shù)返回布爾類型。

二、map鍵值對集合類型

Map 類型是一種鍵值對的集合,其中的鍵和值可以是任何 Hive 支持的數(shù)據(jù)類型。Map 類型用于表示一種關(guān)聯(lián)關(guān)系,類似于其他編程語言中的字典或哈希表。

Map類型的創(chuàng)建:

drop table if exists test_datatype;
create external table test_datatype(
    dat map<string,string>
) comment '數(shù)據(jù)結(jié)構(gòu)測試表'
location 'test/test_datatype';

創(chuàng)建Map類型時,需要聲明其鍵值對泛型,Map 類型的語法為 MAP<key_type, value_type>,其中 key_type 和 value_type 分別表示鍵和值的數(shù)據(jù)類型。

以下構(gòu)建一個簡單的map對象:

====查詢語句====
select
    dat,
    dat['a'],
    map_keys(dat),
    `if`(array_contains(map_keys(dat),"a"),"true","false")
from (
     select `map`('a','b',1,'d') dat
         )t;
         
====執(zhí)行結(jié)果====
dat>>>{"a":"b","1":"d"}
dat['a']>>>b
map_keys(dat)>>>["a","1"]
`if`(array_contains(map_keys(dat),"a"),"true","false")>>>true

map類型使用map[‘key_name’]的方式取出值,并且hive提供了map_keys,map_values獲取所用的key和value,這在一些判斷場景下非常好使。

Tip:map的key的類型可以不統(tǒng)一,但是value類型必須統(tǒng)一。

三、struct結(jié)構(gòu)體類型

在 Hive 中,結(jié)構(gòu)體(Struct)類型是一種用于組合多個字段的復(fù)合數(shù)據(jù)類型。結(jié)構(gòu)體類型允許你在一個列中存儲多個相關(guān)的值,并將它們作為一個單元進(jìn)行處理。

結(jié)構(gòu)體類型由多個字段組成,每個字段都有一個名稱和一個數(shù)據(jù)類型。你可以將結(jié)構(gòu)體類型用作表的列類型,或者作為其他復(fù)合數(shù)據(jù)類型(如數(shù)組或映射)的元素類型。

struct類型的創(chuàng)建:

drop table if exists test_datatype;
create external table test_datatype(
    obj struct<id:int,name:string>
) comment '數(shù)據(jù)結(jié)構(gòu)測試表'
location 'test/test_datatype';

創(chuàng)建struct結(jié)構(gòu)體時,需要聲明所有使用到的類型,結(jié)構(gòu)體創(chuàng)建之后,其屬性不能再做更改。

以下構(gòu)建一個簡單的struct對象:

====查詢語句====
select struct('a','b','c','d') >>>{"col1":"a","col2":"b","col3":"c"}
select name_struct('a','b','c',1) >>>{"a":"b","c":1}
 
select obj,
       obj.a
from (
         select named_struct('a', 'b', 'c', 1) obj
     ) t1;
====執(zhí)行結(jié)果====
obj>>> {"a":"b","c":1}
obj.a>>> b
  1. 結(jié)構(gòu)體通過點的方式訪問元素
  2. 結(jié)構(gòu)體與map不同,一旦創(chuàng)建屬性個數(shù)就不能更改。
  3. 結(jié)構(gòu)體定義后,其類型不能做更改< name:string,age:int >;map類型定義后其每個元素的值類型就需要確定了map< string:stiring >

總結(jié):

遇到Json屬性為 {key1:value1,key2:value2 …}

  1. value類型都統(tǒng)一的,并且個數(shù)不確定的可以使用map類型。
  2. value類型不統(tǒng)一,并且個數(shù)確定的可以使用struct類型。

遇到類似數(shù)組的json數(shù)據(jù):

  "actions": [{                   -- 動作(事件)
    "action_id": "favor_add",   -- 動作id
    "item": "3",                -- 目標(biāo)id
    "item_type": "sku_id",      -- 目標(biāo)類型
    "ts": 1585744376605         -- 動作時間戳
  }
  1. 數(shù)據(jù)結(jié)構(gòu)可以嵌套使用:array< struct < key1:string,key2:int > >
  2. 上述json中actions為數(shù)組,元素個數(shù)不確定并且元素都能夠用struct

array<泛型> map<string:string> struct<name:string,age:int>

具體問題具體分析,根據(jù)數(shù)據(jù)情況選擇合適的數(shù)據(jù)結(jié)構(gòu)。文章來源地址http://www.zghlxwxcb.cn/news/detail-824356.html

到了這里,關(guān)于大數(shù)據(jù)分析組件Hive-集合數(shù)據(jù)結(jié)構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • HNU數(shù)據(jù)結(jié)構(gòu)與算法分析-作業(yè)1-算法分析

    HNU數(shù)據(jù)結(jié)構(gòu)與算法分析-作業(yè)1-算法分析

    ? 1.?(簡答題) 1.(教材3.4)(a)假設(shè)某一個算法的時間代價為 ,對于輸入規(guī)模n,在某臺計算機(jī)上實現(xiàn)并完成該算法的時間為t秒?,F(xiàn)在另有一臺計算機(jī),運行速度為第一臺的64倍,那么t秒內(nèi)新機(jī)器上能完成的輸入規(guī)模為多大? 2.(教材3.12) 寫出下列程序段平均情況下時間代

    2024年02月05日
    瀏覽(20)
  • HNU數(shù)據(jù)結(jié)構(gòu)與算法分析-作業(yè)2-線性結(jié)構(gòu)

    HNU數(shù)據(jù)結(jié)構(gòu)與算法分析-作業(yè)2-線性結(jié)構(gòu)

    ? 1.?(簡答題) 4.1 假設(shè)一個線性表包含下列元素: |2,23,15,5,9 使用Shaffer編寫的教材《數(shù)據(jù)結(jié)構(gòu)與算法分析》的List?ADT編寫一些C++語句,刪除值為15的元素。 (要求:采用C或C++語言描述算法) 4.6 使用Shaffer編寫的教材《數(shù)據(jù)結(jié)構(gòu)與算法分析》的LList類,給LList類的實現(xiàn)添加一個成

    2024年02月05日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu)基本概念及算法分析

    數(shù)據(jù)結(jié)構(gòu)基本概念及算法分析

    數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題中的操作對象,以及它們之間的關(guān)系和操作等相關(guān)問題的學(xué)科 1.1.1 數(shù)據(jù) 數(shù)據(jù): 描述客觀事物的符號,是計算機(jī)中可以操作的對象,是能被計算機(jī)識別,并輸入給計算機(jī)處理的符號集合. 數(shù)據(jù)不僅包括整型,實型等數(shù)據(jù)類型,還包括字符及

    2024年02月15日
    瀏覽(17)
  • 數(shù)據(jù)結(jié)構(gòu)課設(shè)——成績分析問題

    數(shù)據(jù)結(jié)構(gòu)課設(shè)——成績分析問題

    一、實驗 題目 【問題描述】 錄入、保存一個班級學(xué)生多門課程的成績,并對成績進(jìn)行分析。 【基本要求】 (1)通過鍵盤輸入各學(xué)生的多門課程的成績,建立相應(yīng)的文件 input.dat。 (2)對文件 input.dat 中的數(shù)據(jù)進(jìn)行處理,要求具有如下功能: ????????1) 按各門課程成績排

    2024年02月07日
    瀏覽(28)
  • CAN數(shù)據(jù)幀結(jié)構(gòu)圖解分析

    CAN數(shù)據(jù)幀結(jié)構(gòu)圖解分析

    ? CAN數(shù)據(jù)幀的數(shù)據(jù)位結(jié)構(gòu)主要包括以下幾個部分: 起始位 (Start of Frame,SOF): 1位 ,用于標(biāo)識一個CAN數(shù)據(jù)幀的開始,其值為低電平(0)。 標(biāo)識符 (Identifier,ID): 11位或29位 ,用于標(biāo)識CAN數(shù)據(jù)幀的類型和發(fā)送者與接收者等信息。 標(biāo)準(zhǔn)標(biāo)識符(11位):用于標(biāo)識網(wǎng)絡(luò)中的設(shè)

    2024年02月12日
    瀏覽(17)
  • Pandas 數(shù)據(jù)分析系列1--Series&DataFrame數(shù)據(jù)結(jié)構(gòu)詳解

    ?? P andas 是一個開源的數(shù)據(jù)分析和數(shù)據(jù)處理庫,是基于 NumPy 開發(fā)的。它提供了靈活且高效的數(shù)據(jù)結(jié)構(gòu),使得處理和分析結(jié)構(gòu)化、缺失和時間序列數(shù)據(jù)變得更加容易。其在數(shù)據(jù)分析和數(shù)據(jù)處理領(lǐng)域廣泛應(yīng)用,在金融、社交媒體、科學(xué)研究等領(lǐng)域都有很高的使用率和廣泛的應(yīng)用

    2024年02月08日
    瀏覽(19)
  • 《數(shù)據(jù)結(jié)構(gòu)》八大排序(詳細(xì)圖文分析講解)

    《數(shù)據(jù)結(jié)構(gòu)》八大排序(詳細(xì)圖文分析講解)

    目錄 排序 排序的應(yīng)用? ? ?? 排序簡介 排序的分類 排序算法的好壞評判 冒泡排序法? 思路分析 代碼實現(xiàn)? ?選擇排序法 思路分析 代碼實現(xiàn)? ?插入排序 思路分析 代碼實現(xiàn)? 希爾排序 思路分析 代碼演示? 歸并排序法? 思路分析 代碼演示? 快速排序? 思路分析 代碼實現(xiàn)?

    2024年02月03日
    瀏覽(45)
  • AAC 音頻數(shù)據(jù)結(jié)構(gòu)實例分析:

    AAC 音頻數(shù)據(jù)結(jié)構(gòu)實例分析:

    AAC 音頻數(shù)據(jù)結(jié)構(gòu)實例分析: AAC 有兩種數(shù)據(jù)交換格式:ADTS 和 ADIF ADIF: Audio Data Interchange Format, 一個文件只有一個頭,可類比dvd中使用的ps流。 ADTS:Audio Data Transport Stream, 每個frame中都有這個同步頭, 可類比dvb中的ts流. 本博客只介紹 ADTS 格式AAC 基本構(gòu)成是7bytes 頭部+原始數(shù)據(jù). 循

    2024年02月02日
    瀏覽(23)
  • 算法與數(shù)據(jù)結(jié)構(gòu)-復(fù)雜度分析

    算法與數(shù)據(jù)結(jié)構(gòu)-復(fù)雜度分析

    ??算法的執(zhí)行效率,粗略地講,就是算法代碼執(zhí)行的時間。但是,如何在不運行代碼的情況下,用“肉眼”得到一段代碼的執(zhí)行時間呢? ??這里有段非常簡單的代碼,求 1,2,3…n 的累加和。現(xiàn)在,我就帶你一塊來估算一下這段代碼的執(zhí)行時間。 ??從 CPU 的角度來看,這

    2024年02月08日
    瀏覽(22)
  • TCP數(shù)據(jù)報結(jié)構(gòu)分析(面試重點)

    TCP數(shù)據(jù)報結(jié)構(gòu)分析(面試重點)

    在傳輸層中有UDP和TCP兩個重要的協(xié)議,下面將針對TCP數(shù)據(jù)報的結(jié)構(gòu)進(jìn)行分析 關(guān)于UDP數(shù)據(jù)報的結(jié)構(gòu)分析推薦看UDP數(shù)據(jù)報結(jié)構(gòu)分析(面試重點) ? ? ? ? 源端口表示發(fā)送數(shù)據(jù)時,發(fā)送方的端口號,由于占16位2個字節(jié),所以取值范圍是0-65535,所以一個合法的端口號,有效范圍就是

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包