নমুনা এইচবাস বেস

এই পোস্টটিতে এইচবেসের জন্য ধারণার একটি নমুনা প্রমাণ সম্পর্কে আলোচনা করা হয়েছে। আপনি এইচবিজে সম্পর্কে আরও ভাল বোঝার জন্য ধারণার একটি স্পষ্ট ব্যাখ্যা পেতে পারেন।



এই ব্লগে আমরা HBase এর ধারণার একটি নমুনা প্রমাণ সম্পর্কে আলোচনা করব।



নীচের চিত্রের মতো এখানে আমাদের একটি ডেটা সেট রয়েছে।

Sample_Hbase_Use_case



এই ডেটা সেটটিতে মোট আগত কলগুলির সময়কাল, বহির্গামী কল এবং নির্দিষ্ট তারিখে একটি নির্দিষ্ট মোবাইল নম্বর থেকে প্রেরিত বার্তা সম্পর্কে বিশদ রয়েছে consists

প্রথম ক্ষেত্রটি তারিখের প্রতিনিধিত্ব করে, দ্বিতীয় ক্ষেত্রটি মোবাইল নম্বর উপস্থাপন করে, তৃতীয় ক্ষেত্রটি আগত কলগুলির মোট সময়কাল উপস্থাপন করে, চতুর্থ ক্ষেত্রটি বহির্গামী কলগুলির মোট সময়কাল উপস্থাপন করে এবং পঞ্চম ক্ষেত্রটি প্রেরিত মোট বার্তার প্রতিনিধিত্ব করে।

এখন আমাদের কাজটি নির্দিষ্ট তারিখে ফোন নম্বর থেকে প্রেরণকৃত আগমন এবং বহির্গামী কল এবং বার্তাগুলির তথ্য পুনরুদ্ধার করা।



এই ব্যবহারের ক্ষেত্রে, আমি 15 টি রেকর্ড ফিল্টার করার চেষ্টা করছিতমমার্চ ২০১৪. এটি অর্জনের জন্য এখানে একটি এইচবিএস প্রোগ্রাম।

নীচে এটির সম্পূর্ণ কোড দেওয়া আছে।

পাবলিক ক্লাস নমুনা{

ব্যক্তিগত স্থির কনফিগারেশন কনফ

স্থির HTable টেবিল

পাবলিক নমুনা (স্ট্রিং টেবিলনাম, স্ট্রিং কলফ্যাম) ছুড়ে ফেলে আইওএক্সেপশন {

কনফ = এইচবেস কনফিগারেশন। সৃষ্টি ()

তৈরি করুন টেবিল (টেবিল নাম, কলফ্যাম)

টেবিল = নতুন HTable ( কনফ , টেবিলের নাম)

}

শূন্য createTable (স্ট্রিং টেবিলের নাম, স্ট্রিং কলফ্যাম) ছুড়ে ফেলে আইওএক্সেপশন {

HBaseAdmin hbase = নতুন এইচবিএডমিন ( কনফ )

HTableDescriptor desc = নতুন HTableDescriptor (টেবিলের নাম)

এইচকালামডিস্কিটার মেটা = নতুন এইচকালামডেস্কিপ্টার (কলফ্যামস.জেটবাইটস) ()

desc.addFamily (মেটা)

hbase.createTable (desc)

}

পাবলিক স্থির শূন্য অ্যাডক্লমএন্ট্রি (স্ট্রিং টেবিলের নাম, স্ট্রিং সারি,

স্ট্রিং কলফ্যামিলি নেম, স্ট্রিং কোলনাম, স্ট্রিং মান)

ছুড়ে ফেলে আইওএক্সেপশন {

বাইট [] সারিকি = বাইটস। টোবাইটস (সারি)

পুটডাটা = রাখুন নতুন রাখুন (সারি কী)

putdata.add (বাইটস) টোবাইটস (colFamilyName), বাইটস। টোবাইটস (কোলনাম),

বাইটস। টোবাইটস (মান)

টেবিল .পুট (পুটটাটা)

}

পাবলিক স্থির শূন্য getAllRecord (স্ট্রিং টেবিলের নাম, স্ট্রিং স্টার্ট পার্টিয়ালকি,

স্ট্রিং এন্ড পার্টিশালকি) ছুড়ে ফেলে আইওএক্সেপশন {

চেষ্টা করুন {

স্ক্যান এস

যদি (startPartialKey ==) শূন্য || endPartialKey == শূন্য )

s = নতুন স্ক্যান()

অন্য

s = নতুন স্ক্যান (বাইটস) টোবাইটস (স্টার্ট পার্টিয়ালকি),

বাইটস। টোবাইটস (endPartialKey))

রেজাল্টস্ক্যানার এসএস = টেবিল .getScanner (গুলি)

হ্যাশ মানচিত্রআউটপুট রেক = নতুন হ্যাশ মানচিত্র()

স্ট্রিং imsi = ''

জন্য (ফলাফল r: ss) {

হ্যাশম্যাপ কীভ্যাল = নতুন হ্যাশ মানচিত্র()

জন্য (কীভ্যালু কেভি: আর.আরও ()) {

imsi = নতুন স্ট্রিং (kv.getRow ())। স্ট্রিং (10)

কীভাল.পুট ( নতুন স্ট্রিং (kv.getQualifier ()),

নতুন স্ট্রিং (kv.getValue ())

আউটপুটআর.পুট (ইমসি, কীভাল)

যদি (keyVal.size () == 3)

পদ্ধতি. আউট .প্রিন্টলন (নিতে + '' + 'আগত মিনিট:'

+ keyVal.get ('c1 ″) +' আগত মিনিট: '

+ keyVal.get ('c2 ″) +' বার্তা: '

+ keyVal.get ('সি 3'))

}

}

} শেষ পর্যন্ত {

}

}

পাবলিক স্থির শূন্য প্রধান (স্ট্রিং [] আরগস) ছুড়ে ফেলে আইওএক্সেপশন {

স্ট্রিং টেবিলের নাম = 'ডেটেরেকর্ডস'

স্ট্রিং কলফ্যামিলি নেমস = 'আই'

নমুনা পরীক্ষা = নতুন নমুনা (টেবিল নাম, কলফ্যামিলি নাম)

স্ট্রিং ফাইলের নাম = '/ হোম / ক্লৌডেরা / ডেস্কটপ / ডেটা'

// এটি একবারে একটি রেখা উল্লেখ করবে

স্ট্রিং লাইন = শূন্য

চেষ্টা করুন {

// ফাইলরেডার ডিফল্ট এনকোডিংয়ে পাঠ্য ফাইলগুলি পড়ে।

ফাইলরেডার ফাইলআরডার = নতুন ফাইলরেডার (ফাইলের নাম)

// সর্বদা বাফার্ডরিডারে ফাইলরেডার মোড়ানো rap

বাফারড্রেডার বাফারডারিডার = নতুন বাফারড্রেডার (ফাইল রিডার)

যখন ((লাইন = বাফারড্রেডার.ড্রেডলাইন ())! = শূন্য ) {

স্ট্রিং [] মানগুলি = লাইন.স্প্লিট ('')

অ্যাডক্লমএন্ট্রি (টেবিলের নাম, মানগুলি [0] + '-' + মানগুলি [1],

কলফ্যামিলি নেমস, 'সি 1', মানগুলি [2])

অ্যাডক্লমএন্ট্রি (টেবিলের নাম, মানগুলি [0] + '-' + মানগুলি [1],

কলফ্যামিলি নামস, 'সি 2', মানগুলি [3])

অ্যাডক্লমএন্ট্রি (টেবিলের নাম, মানগুলি [0] + '-' + মানগুলি [1],

কলফ্যামিলি নেমস, 'সি 3', মানগুলি [4])

}

বাফারড্রেডার.ক্লস ()

} ধরা (ফাইলনিটফাউন্ডএক্সেপশন প্রাক্তন) {

পদ্ধতি. আউট .প্রিন্টলন ('ফাইল খুলতে অক্ষম' '+ ফাইলের নাম +' '')

} ধরা (আইওএক্সেপশন প্রাক্তন) {

পদ্ধতি. আউট .প্রিন্টলন ('ফাইল পড়ার সময় ত্রুটি' '+ ফাইলের নাম +' '')

// অথবা আমরা কেবল এটি করতে পারি:

// এক্স.প্রিন্টস্ট্যাকট্রেস ()

}

getAllRecord (টেবিল নাম, '20140315', '20140316')

}

}

এখানে আমরা কনফিগারেশন, এইচটিযোগ্য ক্লাস এবং নামের সাথে এইচবিএস সারণি তৈরির একটি অবজেক্ট তৈরি করেছি: ডেটেকর্ডস এবং কলাম পরিবার: i

এই ব্যবহারের ক্ষেত্রে, আমরা এই Hbase টেবিলের জন্য সারি কী হিসাবে '-' দ্বারা বিভক্ত তারিখ এবং মোবাইল নম্বরটির সংমিশ্রণটি এবং আগত, বহির্গামী কল ডিউরেশনস 'গ্রহণ করব, কলামগুলি' c1 'হিসাবে প্রেরিত বার্তার সংখ্যা,' c2 ',' c3 'কলাম পরিবার' i 'এর জন্য।

আমাদের ক্লুডেরার স্থানীয় ফাইল সিস্টেমে ইনপুট ডেটা সংরক্ষণ করা আছে। সুতরাং আমাদের জাভা লজিক লিখতে হবে যা ফাইল থেকে ডেটা পড়ে।

নীচে জাভা যুক্তি দেওয়া আছে।

এই পদ্ধতিতে আমরা কলাম পরিবারের প্রতিটি কলামের জন্য টেবিলের মধ্যে ডেটা সংরক্ষণ করছি।

আমরা স্ক্যান কমান্ডটি ব্যবহার করে Hbase টেবিলের ‘ডেটেরেকর্ডস’ সঞ্চিত ডেটা পরীক্ষা করতে পারি।

আপনি নীচের চিত্র হিসাবে তথ্য পাবেন।

এখন আমরা ডেটাটি HBase টেবিলটিতে সাফল্যের সাথে প্রবেশ করিয়েছি।

আসুন আমরা একটি নির্দিষ্ট তারিখের সারণীতে সঞ্চিত রেকর্ডগুলি পুনরুদ্ধার করি।

কিভাবে লিনাক্সে ক্লাসপথ সেট করবেন

এই ব্যবহারের ক্ষেত্রে, আমরা তারিখ: 15 এর রেকর্ডগুলি পুনরুদ্ধার করার চেষ্টা করছিতমমার্চ 2014

রেকর্ডগুলি পুনরুদ্ধার করতে আমরা একটি পদ্ধতি তৈরি করেছি

getAllRecord (স্ট্রিং টেবিলের নাম, স্ট্রিং স্টার্ট পার্টিয়ালকি, স্ট্রিং এন্ড পার্টিশালকি)

প্রথম প্যারামিটারটি সারণির নাম উপস্থাপন করে, দ্বিতীয়টি সূচনা তারিখের প্রতিনিধিত্ব করে যা থেকে আমাদের তথ্য পুনরুদ্ধার করতে হবে এবং তৃতীয়টিটি শুরু করার তারিখের পরবর্তী তারিখ।

যেমন:

getAllRecord (টেবিল নাম, '20140315', '20140316')

এখন আমাদের বুঝতে যুক্তি এই পদ্ধতির।

আমরা স্টার্ট্পার্টিয়ালকি এবং এন্ড পার্টিশালকি-র সাহায্যে এইচবিএস এপিআই ব্যবহার করে হাব্যাস টেবিলটি স্ক্যান করার চেষ্টা করছি।

যেহেতু স্টার্ট পার্টিয়ালকি এবং এন্ড পার্টিশিয়ালি নাল নয়, এটি অন্য ব্লকে গিয়ে স্টার্ট পার্টিয়ালকি-র মান সহ রেকর্ডগুলি স্ক্যান করবে।

আমরা রেজাল্ট স্ক্যানারের একটি অবজেক্ট তৈরি করেছি যা ফলস্বরূপ আউটপুট সংরক্ষণের জন্য Hbase টেবিলের স্ক্যান করা রেকর্ড এবং একটি হ্যাশম্যাপ সংরক্ষণ করে।

ফলাফল ফলাফল স্ক্যানারে ডেটা স্টোর পেতে আমরা ফলাফলের একটি অবজেক্ট তৈরি করছি এবং লুপের জন্য একটি কার্যকর করছি।

ইমসি হ'ল স্ট্রিং যা মোবাইল নম্বর সংরক্ষণের জন্য সংজ্ঞায়িত করা হয় এবং কীওয়াল হ্যাশ ম্যাপ যা কোনও নির্দিষ্ট ফোনের কলাম থেকে প্রাপ্ত আউটপুট সংরক্ষণ করে।

আমরা দিয়েছি 20140315-1234567890 হিসাবে রাউকি Hbase টেবিল। এই 20140315 তারিখে প্রতিনিধিত্ব করে এবং 1234567890 মোবাইল নম্বর উপস্থাপন করে।

যেহেতু কেবলমাত্র আমাদের মোবাইল নম্বর প্রয়োজন আমরা এটি পুনরুদ্ধার করতে সাবস্ট্রিং পদ্ধতি ব্যবহার করছি।

আমরা r.raw () থেকে ডেটা উদ্ধার করছি এবং পুট ব্যবহার করে এটি হ্যাশম্যাপে সঞ্চয় করছি।

অবশেষে আমরা এগুলি কনসোলে মুদ্রণের চেষ্টা করছি।

আউটপুট নীচের চিত্রের মতো হবে।

আমরা সফলভাবে তারিখের রেকর্ডগুলি পুনরুদ্ধার করেছি: 15তমমার্চ 2014।