மாதிரி HBase POC

இந்த இடுகை HBase க்கான கருத்து சான்று மாதிரி பற்றி விவாதிக்கிறது. HBase பற்றிய உங்கள் புரிதலை மேம்படுத்த இந்த கருத்தின் தெளிவான விளக்கத்தை நீங்கள் காணலாம்.

இந்த வலைப்பதிவில் HBase க்கான மாதிரி ஆதாரம் பற்றிய கருத்து பற்றி விவாதிப்போம்.





கீழேயுள்ள படத்தில் உள்ளதைப் போல இங்கே ஒரு தரவு தொகுப்பு உள்ளது.

Sample_Hbase_Use_case



இந்த தரவுத் தொகுப்பில் மொத்த உள்வரும் அழைப்புகள், வெளிச்செல்லும் அழைப்புகள் மற்றும் ஒரு குறிப்பிட்ட தேதியில் ஒரு குறிப்பிட்ட மொபைல் எண்ணிலிருந்து அனுப்பப்பட்ட செய்திகள் பற்றிய விவரங்கள் உள்ளன.

முதல் புலம் தேதியைக் குறிக்கிறது, இரண்டாவது புலம் மொபைல் எண்ணைக் குறிக்கிறது, மூன்றாவது புலம் உள்வரும் அழைப்புகளின் மொத்த கால அளவையும், நான்காவது புலம் வெளிச்செல்லும் அழைப்புகளின் மொத்த கால அளவையும், ஐந்தாவது புலம் அனுப்பிய மொத்த செய்திகளின் எண்ணிக்கையையும் குறிக்கிறது.

ஒரு குறிப்பிட்ட தேதியில் ஒரு தொலைபேசி எண்ணிலிருந்து உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் மற்றும் அனுப்பப்பட்ட செய்திகளின் கால அளவை மீட்டெடுப்பதே இப்போது எங்கள் பணி.



இந்த பயன்பாட்டு வழக்கில், 15 பதிவுகளை வடிகட்ட முயற்சிக்கிறேன்வதுமார்ச் 2014. இதை அடைய ஒரு HBase திட்டம் இங்கே.

அதன் முழுமையான குறியீடு கீழே.

பொது வர்க்கம் மாதிரி{

தனிப்பட்ட நிலையான உள்ளமைவு conf

நிலையான HTable மேசை

பொது மாதிரி (சரம் அட்டவணை பெயர், சரம் கோல்ஃபாம்ஸ்) வீசுகிறது IOException {

conf = HBaseConfiguration. உருவாக்கு ()

createTable (tableName, colFams)

மேசை = புதியது HTable ( conf , tableName)

}

வெற்றிடத்தை createTable (சரம் அட்டவணை பெயர், சரம் கோல்ஃபாம்ஸ்) வீசுகிறது IOException {

HBaseAdmin hbase = புதியது HBaseAdmin ( conf )

HTableDescriptor desc = புதியது HTableDescriptor (tableName)

HColumnDescriptor மெட்டா = புதியது HColumnDescriptor (colFams.getBytes ())

desc.add குடும்பம் (மெட்டா)

hbase.createTable (desc)

}

பொது நிலையான வெற்றிடத்தை addColumnEntry (சரம் அட்டவணை பெயர், சரம் வரிசை,

சரம் colFamilyName, சரம் colName, சரம் மதிப்புகள்)

வீசுகிறது IOException {

பைட் [] rowKey = பைட்டுகள். toBytes (வரிசை)

Putdata = போடு புதியது போடு (rowKey)

putdata.add (பைட்டுகள். toBytes (colFamilyName), பைட்டுகள். toBytes (colName),

பைட்டுகள். toBytes (மதிப்புகள்))

மேசை .புட் (புட்டாட்டா)

}

பொது நிலையான வெற்றிடத்தை getAllRecord (சரம் அட்டவணை பெயர், சரம் தொடக்க பார்ட்டிகே,

சரம் endPartialKey) வீசுகிறது IOException {

முயற்சி {

ஸ்கேன் கள்

என்றால் (startPartialKey == ஏதுமில்லை || endPartialKey == ஏதுமில்லை )

s = புதியது ஊடுகதிர்()

வேறு

s = புதியது ஸ்கேன் (பைட்டுகள். toBytes (startPartialKey),

பைட்டுகள். toBytes (endPartialKey))

முடிவு ஸ்கேனர் ss = மேசை .getScanner (கள்)

ஹாஷ்மேப்outputRec = புதியது ஹாஷ்மேப்()

சரம் imsi = “”

க்கு (முடிவு r: ss) {

ஹாஷ்மேப் கீவால் = புதியது ஹாஷ்மேப் ()

க்கு (KeyValue kv: r.raw ()) {

imsi = புதியது சரம் (kv.getRow ()). மூலக்கூறு (10)

keyVal.put ( புதியது சரம் (kv.getQualifier ()),

புதியது சரம் (kv.getValue ()))

outputRec.put (imsi, keyVal)

என்றால் (keyVal.size () == 3)

அமைப்பு. வெளியே .println (+ + ”” + “உள்வரும் நிமிடங்கள்:”

+ keyVal.get (“c1 ″) +” வரவிருக்கும் நிமிடங்கள்: ”

+ keyVal.get (“c2 ″) +” செய்திகள்: ”

+ keyVal.get (“c3”))

}

}

} இறுதியாக {

}

}

பொது நிலையான வெற்றிடத்தை main (சரம் [] args) வீசுகிறது IOException {

சரம் அட்டவணை பெயர் = “daterecords”

சரம் colFamilyNames = “i”

மாதிரி சோதனை = புதியது மாதிரி (tableName, colFamilyNames)

சரம் fileName = “/ home / cloudera / Desktop / data”

// இது ஒரு நேரத்தில் ஒரு வரியைக் குறிக்கும்

சரம் வரி = ஏதுமில்லை

முயற்சி {

// FileReader இயல்புநிலை குறியாக்கத்தில் உரை கோப்புகளைப் படிக்கிறது.

FileReader fileReader = புதியது FileReader (fileName)

// FileReader ஐ எப்போதும் BufferedReader இல் மடக்குங்கள்.

BufferedReader bufferedReader = புதியது BufferedReader (fileReader)

போது ((வரி = bufferedReader.readLine ())! = ஏதுமில்லை ) {

சரம் [] மதிப்புகள் = line.split (”“)

முறை ஓவர்லோடிங் மற்றும் ஜாவாவில் முறை மீறல்

addColumnEntry (அட்டவணை பெயர், மதிப்புகள் [0] + “-” + மதிப்புகள் [1],

colFamilyNames, “c1”, மதிப்புகள் [2])

addColumnEntry (அட்டவணை பெயர், மதிப்புகள் [0] + “-” + மதிப்புகள் [1],

colFamilyNames, “c2”, மதிப்புகள் [3])

addColumnEntry (அட்டவணை பெயர், மதிப்புகள் [0] + “-” + மதிப்புகள் [1],

colFamilyNames, “c3”, மதிப்புகள் [4])

}

bufferedReader.close ()

} பிடி (FileNotFoundException ex) {

அமைப்பு. வெளியே .println (“கோப்பை திறக்க முடியவில்லை” ”+ fileName +“ ‘”)

} பிடி (IOException ex) {

அமைப்பு. வெளியே .println (“கோப்பை வாசிப்பதில் பிழை‘ ”+ கோப்பு பெயர் +“ ‘”)

// அல்லது இதை நாம் செய்ய முடியும்:

// ex.printStackTrace ()

}

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

}

}

இங்கே நாம் கட்டமைப்பு, HTable வகுப்பு மற்றும் Hbase அட்டவணையை பெயருடன் உருவாக்கியுள்ளோம்: daterecords மற்றும் நெடுவரிசை குடும்பம்: நான் .

இந்த பயன்பாட்டு வழக்கில், இந்த Hbase அட்டவணையின் வரிசை விசையாகவும், உள்வரும், வெளிச்செல்லும் அழைப்பு காலங்கள் ',' c1 ',' நெடுவரிசைகளாக அனுப்பப்படும் செய்திகளின் எண்ணிக்கையாகவும் '-' ஆல் பிரிக்கப்பட்ட தேதி மற்றும் மொபைல் எண்ணை இணைப்போம். c2 ',' c3 'நெடுவரிசை குடும்பத்திற்கு' i '.

கிளவுட்ராவின் உள்ளூர் கோப்பு முறைமையில் உள்ளீட்டுத் தரவு சேமிக்கப்பட்டுள்ளது. எனவே கோப்பிலிருந்து தரவைப் படிக்கும் ஜாவா லாஜிக்கை எழுத வேண்டும்.

கீழே ஜாவா தர்க்கம் உள்ளது.

இந்த முறையில், நெடுவரிசை குடும்பத்தின் ஒவ்வொரு நெடுவரிசைக்கும் தரவை அட்டவணையில் சேமித்து வருகிறோம்.

ஸ்கேன் கட்டளையைப் பயன்படுத்தி Hbase அட்டவணையில் சேமிக்கப்பட்டுள்ள தரவை ‘daterecords’ சரிபார்க்கலாம்.

கீழேயுள்ள படத்தில் உள்ளதைப் போல தரவைப் பெறுவீர்கள்.

இப்போது தரவை வெற்றிகரமாக HBase அட்டவணையில் செருகினோம்.

ஒரு குறிப்பிட்ட தேதியின் அட்டவணையில் சேமிக்கப்பட்ட பதிவுகளை மீட்டெடுப்போம்.

இந்த பயன்பாட்டு வழக்கில், தேதி: 15 இன் பதிவுகளை மீட்டெடுக்க முயற்சிக்கிறோம்வதுமார்ச் 2014

பதிவுகளை மீட்டெடுக்க நாங்கள் ஒரு முறையை உருவாக்கியுள்ளோம்

getAllRecord (சரம் அட்டவணை பெயர், சரம் தொடக்கப்பகுதி, சரம் endPartialKey)

முதல் அளவுரு அட்டவணை பெயரைக் குறிக்கிறது, இரண்டாவது தொடக்கத் தேதியைக் குறிக்கிறது, அதில் இருந்து தரவை மீட்டெடுக்க வேண்டும், மூன்றாவது தொடக்க தேதியின் அடுத்த தேதி.

எ.கா:

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

இப்போது புரிந்து கொள்வோம் தர்க்கம் இந்த முறையின்.

StartPartialKey மற்றும் endPartialKey உதவியுடன் HBase API ஐப் பயன்படுத்தி Hbase அட்டவணையை ஸ்கேன் செய்ய முயற்சிக்கிறோம்.

StartPartialKey மற்றும் endPartialkey பூஜ்யமாக இல்லாததால், இது வேறு பகுதிகளுக்குச் சென்று தொடக்க பார்ட்டியல் கேயின் மதிப்பைக் கொண்ட பதிவுகளை ஸ்கேன் செய்யும்.

ரிசல்ட் ஸ்கேனரின் ஒரு பொருளை நாங்கள் உருவாக்கியுள்ளோம், இது Hbase அட்டவணையின் ஸ்கேன் செய்யப்பட்ட பதிவுகள் மற்றும் வெளியீட்டை சேமிக்க ஒரு ஹாஷ்மேப்பை சேமிக்கிறது.

ரிசல்ட் ஸ்கேனரில் டேட்டா ஸ்டோரைப் பெறுவதற்கான ஒரு பொருளை நாங்கள் உருவாக்கி, ஒரு லூப்பை இயக்குகிறோம்.

imsi என்பது மொபைல் எண்ணை சேமிக்க வரையறுக்கப்பட்ட சரம் மற்றும் கீவால் என்பது ஒரு குறிப்பிட்ட தொலைபேசியின் நெடுவரிசையிலிருந்து பெறப்பட்ட வெளியீட்டை சேமிக்கும் ஒரு ஹாஷ் வரைபடமாகும்.

நாங்கள் கொடுத்துள்ளோம் 20140315-1234567890 என ரவுக்கி Hbase அட்டவணைக்கு. இந்த 20140315 தேதியையும் 1234567890 மொபைல் எண்ணையும் குறிக்கிறது.

மொபைல் எண் மட்டுமே எங்களுக்குத் தேவைப்படுவதால், அதை மீட்டெடுக்க நாம் அடி மூலக்கூறு முறையைப் பயன்படுத்துகிறோம்.

நாங்கள் r.raw () இலிருந்து தரவை மீட்டெடுக்கிறோம் மற்றும் புட் பயன்படுத்தி ஹாஷ்மேப்பில் சேமிக்கிறோம்.

இறுதியாக அவற்றை கன்சோலில் அச்சிட முயற்சிக்கிறோம்.

வெளியீடு கீழே உள்ள படத்தில் இருக்கும்.

தேதி: 15 இன் பதிவுகளை வெற்றிகரமாக மீட்டெடுத்துள்ளோம்வதுமார்ச் 2014.