Узорак ХБасе ПОЦ



Овај пост говори о узорку доказа о концепту ХБасе. Можете пронаћи јасно објашњење концепта како бисте боље разумели ХБасе.

На овом блогу ћемо разговарати о узорку Доказа концепта за ХБасе.





Овде имамо скуп података као на доњој слици.

Sample_Hbase_Use_case



Овај скуп података састоји се од детаља о трајању укупних долазних позива, одлазних позива и порука послатих са одређеног броја мобилног телефона одређеног датума.

Прво поље представља датум, друго поље представља број мобилног телефона, треће поље представља укупно трајање долазних позива, четврто поље представља укупно трајање одлазних позива, а пето поље представља укупан број послатих порука.

Сада је наш задатак да преузмемо информације о трајању долазних и одлазних позива и послатих порука са телефонског броја одређеног датума.



У овом случају покушавам да филтрирам записе од 15тхМарт 2014. Ево ХБасе програма за постизање овог.

Испод је комплетна шифра истог.

јавно класа узорак{

приватни статички Конфигурација цонф

статички ХТабле сто

јавно пример (Стринг таблеНаме, Стринг цолФамс) баца ИОЕкцептион {

цонф = ХБасеЦонфигуратион. Креирај ()

цреатеТабле (таблеНаме, цолФамс)

сто = Нова ХТабле ( цонф , таблеНаме)

}

празнина цреатеТабле (Стринг таблеНаме, Стринг цолФамс) баца ИОЕкцептион {

ХБасеАдмин хбасе = Нова ХБасеАдмин ( цонф )

ХТаблеДесцриптор десц = Нова ХТаблеДесцриптор (таблеНаме)

ХЦолумнДесцриптор мета = Нова ХЦолумнДесцриптор (цолФамс.гетБитес ())

десц.аддФамили (мета)

хбасе.цреатеТабле (десц)

}

јавно статички празнина аддЦолумнЕнтри (СтрингНаме табеле, ред низа,

Стринг цолФамилиНаме, Стринг цолНаме, Стринг валуес)

баца ИОЕкцептион {

бајт [] ровКеи = Бајтови. тоБитес (ред)

Пут путтата = Нова Пут (ровКеи)

путдата.адд (Битес. тоБитес (цолФамилиНаме), бајтова. тоБитес (цолНаме),

Бајтова. тоБитес (вредности))

сто .пут (путдата)

}

јавно статички празнина гетАллРецорд (Стринг таблеНаме, Стринг стартПартиалКеи,

Стринг ендПартиалКеи) баца ИОЕкцептион {

покушати {

Скенирај с

ако (стартПартиалКеи == нула || ендПартиалКеи == нула )

с = Нова Скенирај ()

иначе

с = Нова Скенирање (бајтова. тоБитес (стартПартиалКеи),

Бајтова. тоБитес (ендПартиалКеи))

РесултСцаннер сс = сто .гетСцаннер (с)

ХасхМапоутпутРец = Нова ХасхМап()

Стринг имси = “”

за (Резултат р: сс) {

ХасхМап кеиВал = Нова ХасхМап ()

за (КеиВалуе кв: р.рав ()) {

имси = Нова Стринг (кв.гетРов ()). Субстринг (10)

кеиВал.пут ( Нова Стринг (кв.гетКуалифиер ()),

Нова Стринг (кв.гетВалуе ()))

оутпутРец.пут (имси, кеиВал)

ако (кеиВал.сизе () == 3)

Систем. напоље .принтлн (узми + ”” + “Долазни минути:”

+ кеиВал.гет (“ц1 ″) +” Одлазни минути: ”

+ кеиВал.гет (“ц2 ″) +” Поруке: ”

+ кеиВал.гет („ц3“))

}

}

} коначно {

}

}

јавно статички празнина маин (Стринг [] аргс) баца ИОЕкцептион {

Стринг таблеНаме = “датерецордс”

како се користи питхон у анаконди

Стринг цолФамилиНамес = „и“

узорак теста = Нова узорак (таблеНаме, цолФамилиНамес)

Стринг филеНаме = “/ хоме / цлоудера / Десктоп / дата”

// Ово ће упућивати један по један ред

Линија низа = нула

покушати {

// ФилеРеадер чита текстуалне датотеке у подразумеваном кодирању.

ФилеРеадер филеРеадер = Нова ФилеРеадер (филеНаме)

// Увек умотајте ФилеРеадер у БуффередРеадер.

БуффередРеадер буффередРеадер = Нова БуффередРеадер (филеРеадер)

док ((линија = буферРеадер.реадЛине ())! = нула ) {

Стринг [] вредности = лине.сплит (”“)

аддЦолумнЕнтри (таблеНаме, вредности [0] + “-” + вредности [1],

цолФамилиНамес, „ц1“, вредности [2])

аддЦолумнЕнтри (таблеНаме, вредности [0] + “-” + вредности [1],

цолФамилиНамес, „ц2“, вредности [3])

аддЦолумнЕнтри (таблеНаме, вредности [0] + “-” + вредности [1],

цолФамилиНамес, “ц3”, вредности [4])

}

буффередРеадер.цлосе ()

} улов (ФилеНотФоундЕкцептион ек) {

Систем. напоље .принтлн („Није могуће отворити датотеку„ “+ име датотеке +„ „“)

} улов (ИОЕкцептион ек) {

Систем. напоље .принтлн („Грешка при читању датотеке„ “+ Име датотеке +„ „“)

// Или бисмо могли само ово:

// ек.принтСтацкТраце ()

}

гетАллРецорд (таблеНаме, „20140315“, „20140316“)

}

}

Овде смо креирали објекат Конфигурације, класе ХТабле и креирали Хбасе табелу са именом: датерецордс и породица колона: и .

У овом случају употребе комбинацију датума и броја мобилног телефона одвојићемо као „-“ као кључ реда за ову Хбасе табелу и трајање долазних, одлазних позива „, број порука послатих као колоне„ ц1 “, ц2 ',' ц3 'за породицу колона' и '.

Улазне податке имамо ускладиштене у локалном систему датотека Цлоудера. Дакле, морамо написати Јава Логиц која чита податке из датотеке.

Испод је Јава логика.

Овом методом податке чувамо у табели за сваку колону породице колона.

Податке ускладиштене у Хбасе табели „датерецордс“ можемо проверити помоћу наредбе за скенирање.

Добићете податке као на доњој слици.

Сада смо успешно убацили податке у табелу ХБасе.

Дохватимо записе сачуване у Табели одређеног датума.

У овом случају употребе покушавамо да дођемо до записа са датумом: 15тхМарта 2014

Да бисмо преузели записе, креирали смо метод

гетАллРецорд (СтрингНаме табле, Стринг стартПартиалКеи, Стринг ендПартиалКеи)

Први параметар представља име табеле, други представља датум почетка од којег треба да преузмемо податке, а трећи је следећи датум датума почетка.

На пример:

гетАллРецорд (таблеНаме, “20140315”, “20140316”)

Сада да разумемо логика ове методе.

Покушавамо да скенирамо Хбасе табелу користећи ХБасе АПИ уз помоћ стартПартиалКеи и ендПартиалКеи.

Како СтартПартиалКеи и ендПартиалкеи нису нулл, прећи ће на елсе блоцк и скенирати записе који имају вредност стартПартиалКеи.

Направили смо објекат скенера резултата који чува скениране записе Хбасе табеле и ХасхМап за складиштење резултата који ће бити резултат.

Стварамо објекат резултата да бисмо спремили складиште података у скенер резултата и извршили петљу фор.

имси је низ који је дефинисан за чување мобилног броја, а кеиВал је хеш мапа која чува излаз преузет из колоне одређеног телефона.

Дали смо 20140315-1234567890 као ровкеи до табеле Хбасе. У овом 20140315 представља датум, а 1234567890 представља мобилни број.

Како нам је потребан само мобилни број, користимо методу подниза да бисмо га преузели.

Дохваћамо податке из р.рав () и складиштимо их у ХасхМап-у користећи Пут.

фибоначијев низ у ц ++

Напокон покушавамо да их одштампамо на конзоли.

Излаз ће бити као на доњој слици.

Успешно смо преузели записе о датуму: 15тхМарта 2014.