اس بلاگ میں ہم HBase کے تصور کے ایک نمونہ ثبوت کے بارے میں بات کریں گے۔
یہاں ہمارے پاس ڈیٹا سیٹ کیا گیا ہے جیسا کہ نیچے کی تصویر میں ہے۔
اس ڈیٹا سیٹ میں کل آنے والی کالوں ، سبکدوش ہونے والی کالوں اور ایک خاص تاریخ پر کسی خاص موبائل نمبر سے بھیجے گئے پیغامات کے بارے میں تفصیلات پر مشتمل ہے۔
پہلا فیلڈ تاریخ کی نمائندگی کرتا ہے ، دوسرا فیلڈ موبائل نمبر کی نمائندگی کرتا ہے ، تیسرا فیلڈ آنے والی کالوں کی کل مدت کی نمائندگی کرتا ہے ، چوتھا فیلڈ آؤٹ گوئنگ کالوں کی کل مدت کی نمائندگی کرتا ہے ، اور پانچواں فیلڈ میسجز کی کل تعداد کی نمائندگی کرتا ہے۔
اب ہمارا کام یہ ہے کہ آنے والی اور جانے والی کالوں اور پیغامات کی مدت کی معلومات کسی خاص تاریخ کے کسی فون نمبر سے بازیافت کریں۔
استعمال کے معاملے میں ، میں 15 کے ریکارڈ کو فلٹر کرنے کی کوشش کر رہا ہوںویںمارچ 2014. یہاں حاصل کرنے کے لئے ایک HBase پروگرام ہے۔
ذیل میں اس کا مکمل کوڈ ہے۔
عوام کلاس نمونہ{
نجی جامد تشکیل اعتراف
جامد قابل قابل ٹیبل
عوام نمونہ (سٹرنگ ٹیبل نام ، سٹرنگ کولفم) پھینک دیتا ہے IOException
اعتراف = HBaseConfigration. بنانا ()
تخلیق ٹیبل (ٹیبل نام ، کولفام)
ٹیبل = نئی قابل قابل ( اعتراف ، ٹیبل نام)
}
باطل تخلیق ٹیبل (سٹرنگ ٹیبل نام ، سٹرنگ کولفام) پھینک دیتا ہے IOException
HBaseAdmin hbase = نئی HBaseAdmin ( اعتراف )
HTableDescriptor desc = نئی HTableDescriptor (ٹیبل نام)
HOLOLMDescriptor میٹا = نئی ایچ کالم ڈیسکرپٹر (colFams.getBytes ())
desc.addFamily (میٹا)
hbase.createTable (desc)
}
عوام جامد باطل ایڈ کالم اینٹری (سٹرنگ ٹیبل نام ، سٹرنگ قطار ،
سٹرنگ colFamilyName ، سٹرنگ کول نام ، اسٹرنگ ویلیوز)
پھینک دیتا ہے IOException
بائٹ [] قطارکی = بائٹس۔ toBytes (قطار)
ڈال ڈالڈاٹا = نئی رکھو (صف کی)
putdata.add (بائٹس) toBytes (colFamilyName) ، بائٹس۔ toBytes (کولنام)،
جاوا میں فبونیکی سیریز پروگرام
بائٹس toBytes (اقدار)
ٹیبل . پٹ (پٹ ڈیٹا)
}
عوام جامد باطل getAllRecord (سٹرنگ ٹیبل نام ، اسٹرنگ اسٹارٹ پارٹلکی ،
سٹرنگ اینڈ پارٹیکلکی) پھینک دیتا ہے IOException
کوشش کریں {
اسکین کریں
اگر (startPartialKey == خالی || endPartialKey == خالی )
s = نئی اسکین ()
اور
s = نئی اسکین (بائٹس) toBytes (startPartialKey) ،
بائٹس toBytes (endPartialKey))
رزلٹ اسکینر ss = ٹیبل .getScanner (s)
ہش میپ
سٹرنگ امسی = ''
کے لئے (نتیجہ r: ss) {
ہش میپ کیول = نئی ہش میپ ()
کے لئے (کیویلو کیوی: r.raw ()) {
imsi = نئی سٹرنگ (kv.getRow ()). اسٹریننگ (10)
keyVal.put ( نئی سٹرنگ (kv.getQualifier ()) ،
نئی سٹرنگ (kv.getValue ())
آؤٹ پٹ ریک (آؤپسی ، کیول)
اگر (keyVal.size () == 3)
سسٹم۔ باہر .پرنٹ لین (لے + '' + 'آنے والے منٹ:'
+ keyVal.get ('c1 ″) +' آنے والے منٹ: '
+ keyVal.get ('c2 ″) +' پیغامات: '
جاوا میں سیمفور کیا ہے؟
+ keyVal.get ('c3'))
}
}
} آخر میں {
}
}
عوام جامد باطل مین (سٹرنگ [] آرگس) پھینک دیتا ہے IOException
سٹرنگ ٹیبل نام = 'تاریخ سازی'
سٹرنگ colFamilyNames = 'i'
نمونہ ٹیسٹ = نئی نمونہ (ٹیبل نام ، کولفامیلی نام)
سٹرنگ فائل کا نام = '/ گھر / کلیڈیرا / ڈیسک ٹاپ / ڈیٹا'
// یہ ایک وقت میں ایک لائن کا حوالہ دے گا
سٹرنگ لائن = خالی
کوشش کریں {
// فائل ریڈر ڈیفالٹ انکوڈنگ میں ٹیکسٹ فائلوں کو پڑھتا ہے۔
فائل ریڈر فائل ریڈر = نئی فائل ریڈر (فائل کا نام)
// ہمیشہ فائلڈریڈر کو بفرڈریڈر میں لپیٹیں۔
بفرڈرڈر بفرڈریڈر = نئی بفرڈ ریڈر (فائل ریڈر)
جبکہ ((لائن = بفرڈرڈر۔ریڈ لائن ())) = خالی ) {
سٹرنگ [] قدریں = لائن۔اسپلٹ ('')
شامل کریں (ٹیبل نام ، قدریں [0] + '-' + اقدار [1] ،
colFamilyNames ، 'c1' ، اقدار [2])
شامل کریں (ٹیبل نام ، قدریں [0] + '-' + اقدار [1] ،
colFamilyNames ، 'c2' ، اقدار [3])
شامل کریں (ٹیبل نام ، قدریں [0] + '-' + اقدار [1] ،
colFamilyNames ، 'c3' ، اقدار [4])
}
بفرڈرڈر۔کلوز ()
} کیچ (فائلنامٹ فاؤنڈ ایگزیکشن سابق) {
سسٹم۔ باہر .Println ('فائل کھولنے سے قاصر ہوں' '+ فائل نام +' '')
} کیچ (IOException سابقہ) {
سسٹم۔ باہر .Println ('فائل پڑھنے میں غلطی' '+ fileName +' '')
// یا ہم صرف یہ کرسکتے ہیں:
// ex.printStackTrace ()
}
getAllRecord (ٹیبل نام ، “20140315” ، “20140316”)
}
}
یہاں ہم نے کنفیگریشن ، ایچ ٹی ایبل کلاس اور نام کے ساتھ ہیبیس ٹیبل تیار کرنے کا آبجیکٹ تیار کیا ہے۔ تاریخ سازی اور کالم کنبہ: میں .
اس استعمال کے معاملے میں ، ہم اس ہیبیس ٹیبل اور آنے والی ، جانے والی کال کی دورانیے کے لئے '-' کے ذریعہ '-' سے جدا ہوئے تاریخ اور موبائل نمبر کا مجموعہ ، کالم 'c1' کے بطور بھیجے گئے پیغامات کی تعداد کے طور پر لیں گے۔ ' c2 '،' c3 'کالم کنبہ کے لئے' i '۔
ہمارے پاس کلپڈیرا کے مقامی فائل سسٹم میں ان پٹ ڈیٹا محفوظ ہے۔ لہذا ہمیں جاوا لاجک لکھنے کی ضرورت ہے جو فائل سے موجود ڈیٹا کو پڑھ سکے۔
جاوا منطق ذیل میں ہے۔
اس طریقہ کار میں ہم کالم کنبے کے ہر کالم کے لئے ڈیٹا کو ٹیبل میں اسٹور کر رہے ہیں۔
ہم اسکین کمانڈ استعمال کرکے ہیبیس ٹیبل ‘ڈیٹ ریکارڈز’ میں محفوظ ڈیٹا کو چیک کرسکتے ہیں۔
نیچے دی گئی تصویر میں آپ کو اعداد و شمار ملیں گے۔
اب ہم نے کامیابی کے ساتھ ایچ بیس ٹیبل میں ڈیٹا داخل کردیا ہے۔
آئیے ایک خاص تاریخ کے ٹیبل میں رکھے ہوئے ریکارڈز کو بازیافت کریں۔
استعمال کے معاملے میں ، ہم تاریخ: 15 کے ریکارڈ کو بازیافت کرنے کی کوشش کر رہے ہیںویںمارچ 2014
ریکارڈز کی بازیافت کے ل we ہم نے ایک طریقہ تیار کیا ہے
getAllRecord (سٹرنگ ٹیبل نام ، اسٹرنگ اسٹارٹپارٹیکلکی ، اسٹرنگ اینڈ پارٹیکلکی)
پہلا پیرامیٹر ٹیبل کے نام کی نمائندگی کرتا ہے ، دوسرا شروعاتی تاریخ کی نمائندگی کرتا ہے جہاں سے ہمیں اعداد و شمار کو بازیافت کرنے کی ضرورت ہے اور تیسرا شروعاتی تاریخ کی اگلی تاریخ ہے۔
جیسے:
getAllRecord (ٹیبل نام ، '20140315' ، '20140316')
اب ہم اس کو سمجھیں منطق اس طریقہ کار کا
ہم اسٹارٹ پارٹیکلکی اور اینڈ پارٹیکلکی کی مدد سے HBase API کا استعمال کرکے ہیبیس ٹیبل اسکین کرنے کی کوشش کر رہے ہیں۔
چونکہ اسٹارٹپارٹیکلکی اور اینڈ پارٹیکلکی کوئی حد تک خالی نہیں ہے ، لہذا یہ اور بلاک پر جاکر اسٹارٹ پارٹیکلکی کی قدر رکھنے والے ریکارڈز کو اسکین کرے گا۔
ہم نے رزلٹ اسکینر کا ایک آبجیکٹ تیار کیا ہے جو آؤٹ پٹ کو محفوظ کرنے کے لئے ہیبیس ٹیبل کے اسکین ریکارڈز اور ایک ہش میپ کو محفوظ کرتا ہے جس کا نتیجہ ہوگا۔
ہم رزلٹ اسکینر میں ڈیٹا اسٹور حاصل کرنے کے لئے رزلٹ کا ایک مقصد پیدا کر رہے ہیں اور ایک لوپ پر عمل درآمد کر رہے ہیں۔
امسی وہ تار ہے جس کی تعریف موبائل نمبر کو اسٹور کرنے کے لئے کی گئی ہے اور کیول ایک ہش میپ ہے جو کسی خاص فون کے کالم سے حاصل شدہ آؤٹ پٹ کو اسٹور کرتا ہے۔
ہم نے دیا ہے 20140315-1234567890 کے طور پر قطار Hbase میز پر. اس میں 20140315 تاریخ کی نمائندگی کرتا ہے اور 1234567890 موبائل نمبر کی نمائندگی کرتا ہے۔
جاوا میں انتظار کریں اور مطلع کریں
چونکہ ہمیں صرف موبائل نمبر کی ضرورت ہوتی ہے ہم اسے بازیافت کرنے کیلئے اسٹریننگ کا طریقہ استعمال کر رہے ہیں۔
ہم r.raw () سے ڈیٹا بازیافت کر رہے ہیں اور پوش کا استعمال کرکے ہش میپ میں اسٹور کر رہے ہیں۔
آخر میں ہم انہیں کنسول پر پرنٹ کرنے کی کوشش کر رہے ہیں۔
آؤٹ پٹ ذیل کی شبیہہ کی طرح ہوگا۔
ہم نے تاریخ: 15 کے ریکارڈ کو کامیابی کے ساتھ حاصل کیا ہےویںمارچ 2014۔