HBase POC paraugs



Šajā ziņojumā ir apspriests HBase koncepcijas parauga paraugs. Jūs varat atrast skaidru jēdziena skaidrojumu, lai labāk izprastu HBase.

Šajā emuārā mēs apspriedīsim HBase koncepcijas parauga paraugu.





Šeit mums ir datu kopa, kā parādīts attēlā.

Sample_Hbase_Use_case



Šī datu kopa sastāv no detalizētas informācijas par kopējo ienākošo zvanu, izejošo zvanu ilgumu un ziņojumiem, kas konkrētā datumā nosūtīti no konkrēta mobilā numura.

Pirmais lauks apzīmē datumu, otrais - mobilā tālruņa numuru, trešais - kopējo ienākošo zvanu ilgumu, ceturtais - kopējo izejošo zvanu ilgumu, bet piektais - kopējo nosūtīto ziņojumu skaitu.

Tagad mūsu uzdevums ir iegūt informāciju par ienākošo un izejošo zvanu un nosūtīto ziņojumu ilgumu no tālruņa numura noteiktā datumā.



Šajā lietošanas gadījumā mēģinu filtrēt 15 ierakstuth2014. gada marts. Lai to sasniegtu, ir HBase programma.

Zemāk ir pilns tā kods.

publiski klasē paraugs{

Privāts statisks Konfigurācija konf

statisks HTable tabula

publiski paraugs (String tableName, String colFams) metieni IOException {

konf = HBaseConfiguration. izveidot ()

createTable (tableName, colFams)

tabula = jauns HTable ( konf , tableName)

}

spēkā neesošs createTable (String tableName, String colFams) metieni IOException {

HBaseAdmin hbase = jauns HBaseAdmin ( konf )

HTableDescriptor desc = jauns HTableDescriptor (tableName)

HColumnDescriptor meta = jauns HColumnDescriptor (colFams.getBytes ())

desc.addFamily (meta)

hbase.createTable (apraksts)

}

publiski statisks spēkā neesošs addColumnEntry (virknes tabulas nosaukums, virknes rinda,

String colFamilyName, String colName, String vērtības)

metieni IOException {

baits [] rowKey = baiti. toBytes (rinda)

Ielieciet putdata = jauns Ievietot (rowKey)

putdata.add (baiti. toBytes (colFamilyName), baiti. toBytes (colName),

Baiti. toBytes (vērtības))

tabula .put (putdata)

}

publiski statisks spēkā neesošs getAllRecord (String tableName, String startPartialKey,

String endPartialKey) metieni IOException {

mēģiniet {

kā veikt ekrānuzņēmumu selēna tīmekļa draiverī, izmantojot

Skenēt s

ja (startPartialKey == nulle || endPartialKey == nulle )

s = jauns Skenēt ()

cits

s = jauns Skenēt (baiti. toBytes (startPartialKey),

Baiti. toBytes (endPartialKey))

ResultScanner ss = tabula .getScanner (s)

HashMapoutputRec = jauns HashMap()

Virkne imsi = “”

priekš (Rezultāts r: ss) {

HashMap keyVal = jauns HashMap ()

priekš (KeyValue kv: r.raw ()) {

imsi = jauns Virkne (kv.getRow ()). Apakšvirkne (10)

keyVal.put ( jauns Virkne (kv.getQualifier ()),

iestatiet klases ceļu Java

jauns Virkne (kv.getValue ()))

outputRec.put (imsi, keyVal)

ja (keyVal.size () == 3)

Sistēma. ārā .println (ņemiet + ”” + “Ienākošās minūtes:”

+ keyVal.get (“c1 ″) +” Izejošās minūtes: ”

+ keyVal.get (“c2 ″) +” Ziņojumi: ”

+ keyVal.get (“c3”))

}

}

} beidzot {

}

}

publiski statisks spēkā neesošs galvenais (virkne [] argumenti) metieni IOException {

String tableName = “datēšanas ieraksti”

String colFamilyNames = “i”

parauga tests = jauns paraugs (tableName, colFamilyNames)

String fileName = “/ home / cloudera / Desktop / data”

// Tas atsauksies uz vienu līniju vienlaikus

Stīgu līnija = nulle

mēģiniet {

// FileReader nolasa teksta failus noklusējuma kodējumā.

FileReader fileReader = jauns FileReader (faila nosaukums)

// Vienmēr iesaiņojiet FileReader BufferedReader.

BufferedReader bufferedReader = jauns BufferedReader (fileReader)

kamēr ((līnija = buferētaReader.readLine ())! = nulle ) {

Virknes [] vērtības = line.split (““)

addColumnEntry (tabulas nosaukums, vērtības [0] + “-” + vērtības [1],

colFamilyNames, “c1”, vērtības [2])

addColumnEntry (tabulas nosaukums, vērtības [0] + “-” + vērtības [1],

colFamilyNames, “c2”, vērtības [3])

addColumnEntry (tabulas nosaukums, vērtības [0] + “-” + vērtības [1],

colFamilyNames, “c3”, vērtības [4])

}

bufferedReader.close ()

} noķert (FileNotFoundException ex) {

Sistēma. ārā .println (“Nevar atvērt failu“ ”+ faila nosaukums +“ ’”)

} noķert (IOException ex) {

Sistēma. ārā .println (“Kļūda lasot failu” ”+ faila nosaukums +“ ””)

Vai arī mēs to varētu vienkārši izdarīt:

// ex.printStackTrace ()

}

getAllRecord (tableName, “20140315”, “20140316”)

}

}

Šeit mēs esam izveidojuši objektu Konfigurācija, HTable klase un izveidojuši Hbase tabulu ar nosaukumu: datordokumenti un kolonnu saime: i .

Šajā lietošanas gadījumā datuma un mobilā tālruņa numura kombināciju, kas atdalīta ar “-”, mēs izmantosim kā šīs Hbase tabulas rindas atslēgu un ienākošo, izejošo zvanu ilgumus ”, nosūtīto ziņojumu skaitu kā slejas“ c1 ” c2 ”,“ c3 ”kolonnu saimei“ i ”.

Mums ievades dati ir saglabāti Cloudera vietējā failu sistēmā. Tāpēc mums ir jāraksta Java Logic, kas nolasa datus no faila.

Zemāk ir Java loģika.

Šajā metodē mēs datus glabājam tabulā katrai kolonnu saimes kolonnai.

Izmantojot skenēšanas komandu, mēs varam pārbaudīt datus, kas saglabāti Hbase tabulā ‘daterecords’.

Jūs saņemsit datus, kā parādīts zemāk esošajā attēlā.

Tagad mēs esam veiksmīgi ievietojuši datus HBase tabulā.

Ielādēsim konkrētā datuma tabulā saglabātos ierakstus.

Šajā lietošanas gadījumā mēs cenšamies izgūt ierakstu Datums: 15th2014. gada marts

Lai izgūtu ierakstus, mēs esam izveidojuši metodi

getAllRecord (String tableName, String startPartialKey, String endPartialKey)

Pirmais parametrs apzīmē tabulas nosaukumu, otrais - sākuma datumu, no kura mums jāiegūst dati, un trešais ir nākamais sākuma datuma datums.

Piemēram:

getAllRecord (tableName, “20140315”, “20140316”)

Tagad ļaujiet mums saprast loģika šo metodi.

Mēs mēģinām skenēt Hbase tabulu, izmantojot HBase API ar startPartialKey un endPartialKey palīdzību.

Tā kā StartPartialKey un endPartialkey nav nulle, tā tiks bloķēta un skenēta ierakstus, kuru vērtība ir startPartialKey.

izskaidrojiet mvc arhitektūru java ar piemēru

Mēs esam izveidojuši rezultātu skenera objektu, kurā tiek glabāti Hbase tabulas skenētie ieraksti un HashMap, lai saglabātu rezultātu.

Mēs izveidojam rezultāta objektu, lai iegūtu datu krātuvi rezultātu skenerī un izpildītu for ciklu.

imsi ir virkne, kas definēta mobilā tālruņa numura glabāšanai, un keyVal ir Hash karte, kurā tiek saglabāta izeja, kas iegūta no konkrētā tālruņa kolonnas.

Mēs esam devuši 20140315-1234567890rinda pie Hbase galda. Šajā 20140315 apzīmē datumu un 1234567890 mobilā tālruņa numuru.

Tā kā mums ir nepieciešams tikai mobilā tālruņa numurs, tā iegūšanai izmantojam apakšvirknes metodi.

Mēs iegūstam datus no r.raw () un glabājam tos HashMap, izmantojot Put.

Visbeidzot, mēs mēģinām tos izdrukāt uz konsoles.

Izeja būs tāda, kā parādīts attēlā.

Mēs veiksmīgi izguvām datumus: 15th2014. gada marts.