HBase के साथ तालिका बनाएँ Java एपीआई और शेल उदाहरण

⚡ स्मार्ट सारांश

HBase डेटा को तालिकाओं में संग्रहीत करता है, और आप उन तालिकाओं को दो तरीकों से बना और प्रबंधित कर सकते हैं: इसके माध्यम से Java एचटेबल के साथ एपीआईDescriptया तो HBaseAdmin में, या सीधे HBase शेल में क्रिएट कमांड का उपयोग करके।

  • Java एपीआई: HTable का उपयोग करके कोड में टेबल बनाएंDescriptया, एच कॉलमDescriptया, और HBaseAdmin.
  • 🐚 शेल बनाएं: क्रिएट कमांड एक नाम और एक या अधिक कॉलम परिवारों से एक टेबल बनाता है।
  • 🧬 कॉलम परिवार: प्रत्येक टेबल में कम से कम एक कॉलम फैमिली होनी चाहिए, जिसे टेबल बनाते समय परिभाषित किया जाता है।
  • 🔧 तालिकाओं में परिवर्तन करें: alter कमांड कॉलम फ़ैमिली जोड़ता है, VERSIONS सेट करता है, या टेबल-स्कोप एट्रिब्यूट्स को बदलता है।
  • टेबल जीवनचक्र: किसी टेबल को बदलने या हटाने से पहले उसे निष्क्रिय कर दें, फिर लिखने का काम फिर से शुरू करने के लिए उसे दोबारा निष्क्रिय कर दें।
  • 🤖 एआई सहायता: एआई सहायक क्रिएट, ऑल्टर और ड्रॉप कमांड का मसौदा तैयार करते हैं और कॉलम-फैमिली डिजाइन की समीक्षा करते हैं।

एचबेस में टेबल बनाएं Java एपीआई और शेल कमांड का उदाहरण

HBase में टेबल कैसे बनाएं? Java API

HBase में, टेबल दो तरीकों से बनाई जा सकती हैं: Java एपीआई और एचबेस शेल के माध्यम से। यह अनुभाग निम्नलिखित को कवर करता है। Java एपीआई, जो किसी एप्लिकेशन को एक बड़े कार्य के हिस्से के रूप में प्रोग्रामेटिक रूप से टेबल बनाने और डेटा लोड करने की अनुमति देता है।

यहाँ Java API का उपयोग करके, हम HBase में तालिकाएँ बना सकते हैं और तालिकाओं में डेटा भी लोड कर सकते हैं Java कोडिंग। यहाँ हमने दो चीज़ें सेट अप की हैं:

  • HBase के साथ कनेक्शन स्थापित करना Java एपीआई।
  • का प्रयोग Eclipse एसटी Java कोडिंग, डिबगिंग और टेस्टिंग।

HBase में टेबल बनाने के लिए निम्नलिखित चरण हैं Java एपीआई।

चरण 1) एक बनाएं Java परियोजना में Eclipse

इस चरण में, हम एक बनाने जा रहे हैं Java में परियोजना Eclipse एचबेस कनेक्शन के लिए, जिसका नाम "एचबेसकनेक्शन" है।

नई Java नीचे दिए गए प्रोजेक्ट डायलॉग बॉक्स में "HbaseConnection" प्रोजेक्ट की सेटअप प्रक्रिया दिखाई गई है:

Eclipse नया Java प्रोजेक्ट डायलॉग HbaseConnection प्रोजेक्ट बना रहा है JavaSE-1.7 वातावरण

यदि हम ऊपर दिए गए स्क्रीनशॉट को देखें:

  • इस बॉक्स में प्रोजेक्ट का नाम लिखें। हमारे मामले में, प्रोजेक्ट का नाम "HbaseConnection" है।
  • डिफ़ॉल्ट रूप से सहेजने के लिए इस बॉक्स को चेक करें। यहाँ /home/hduser/work/HbaseConnection पाथ है।
  • बॉक्स पर निशान लगाएँ Java यहां का वातावरण। इस मामले में Javaएसई-1.7 है Java संस्करण.
  • आप फ़ाइल को कहाँ सहेजना चाहते हैं, उसके लिए विकल्प चुनें। हमारे मामले में, हमने दूसरा विकल्प चुना, "स्रोत और क्लास फ़ाइलों के लिए एक अलग फ़ोल्डर बनाएँ"।
  • Finish बटन पर क्लिक करें, जिससे “HbaseConnection” प्रोजेक्ट बन जाएगा। Eclipse और खोलता है Eclipse मुख पृष्ठ.

चरण 2) बिल्ड पाथ को कॉन्फ़िगर करें Eclipse

पर Eclipse होम पेज पर जाकर, बिल्ड पाथ कॉन्फ़िगरेशन खोलने के लिए इन चरणों का पालन करें:

Right click on project -> Select Build Path -> Configure build path

नीचे दिया गया स्क्रीनशॉट बिल्ड पाथ कॉन्फ़िगरेशन खोलने के लिए उपयोग किए जाने वाले राइट-क्लिक मेनू को दर्शाता है:

Eclipse प्रोजेक्ट पर राइट-क्लिक करें, मेनू में Build Path चुनें और फिर Configure Build Path चुनें।

ऊपर दिए गए स्क्रीनशॉट से:

  • किसी प्रोजेक्ट पर राइट-क्लिक करें।
  • बिल्ड पाथ चुनें।
  • कॉन्फ़िगर बिल्ड पाथ चुनें।

कॉन्फ़िगर बिल्ड पाथ पर क्लिक करने के बाद, एक और विंडो खुलती है, जैसा कि नीचे दिए गए स्क्रीनशॉट में दिखाया गया है। लाइब्रेरीज़ टैब वह जगह है जहाँ HBase और Hadoop JAR फ़ाइलें प्रोजेक्ट में जोड़ी जाती हैं:

Eclipse Java बिल्ड पाथ लाइब्रेरीज़ टैब में बाहरी HBase और Hadoop JAR फ़ाइलें जोड़ना

इस चरण में, हम संबंधित HBase JAR फ़ाइलों को जोड़ते हैं। Java स्क्रीनशॉट में दिखाए गए प्रोजेक्ट के अनुसार।

  • जोड़ी जाने वाली महत्वपूर्ण JAR फाइलें: hbase-0.94.8.jar और hadoop-core-1.1.2.jar।
  • लाइब्रेरी टैब पर आएं।
  • "Add External JARs" विकल्प पर क्लिक करें।
  • आवश्यक महत्वपूर्ण JAR फ़ाइलों का चयन करें।
  • इन फ़ाइलों को "src" फ़ोल्डर में जोड़ने के लिए Finish बटन दबाएँ। Java पुस्तकालयों के अंतर्गत परियोजना।

JAR फ़ाइलें जोड़ने के बाद, वे नीचे दिखाए अनुसार प्रोजेक्ट के "src" स्थान के अंतर्गत दिखाई देती हैं:

Eclipse प्रोजेक्ट एक्सप्लोरर प्रोजेक्ट सोर्स के अंतर्गत जोड़े गए HBase और Hadoop JAR फ़ाइलों को दिखा रहा है।

इस प्रोजेक्ट के अंतर्गत आने वाली सभी JAR फाइलें अब Hadoop इकोसिस्टम के साथ उपयोग के लिए तैयार हैं।

चरण 3) HBase कनेक्शन स्थापित करें

इस चरण में, HBaseConnection.java का उपयोग करके, HBase कनेक्शन स्थापित किया जाता है। Java कोडिंग।

पर Eclipse शीर्ष मेनू, निष्पादित करें Java नीचे दिखाए गए अनुसार प्रोग्राम करें: चलाएँ -> इस रूप में चलाएँ -> Java एप्लिकेशन। नीचे दिया गया मेनू लॉन्च किए जा रहे प्रोग्राम को दर्शाता है:

Eclipse ऐसे दोड़ो Java एप्लिकेशन मेनू HBaseConnection प्रोग्राम लॉन्च करता है

  • रन चुनें।
  • रन ऐज़ चुनें Java आवेदन।
  • यह कोड एचबेस के साथ कनेक्शन स्थापित करता है। Java एपीआई।
  • इस कोड को चलाने के बाद, HBase में “guru99” नाम की एक टेबल बन जाती है जिसमें “education” और “projects” नाम के दो कॉलम परिवार होते हैं। फिलहाल, HBase में केवल खाली स्कीमा ही बनी है।

नीचे दिए गए कोड अंश में एचटीटेबल को हाइलाइट किया गया है।Descriptया फिर addFamily कॉल जो टेबल स्कीमा बनाते हैं:

Java एचटेबल का उपयोग करके कोडDescriptor और addFamily का उपयोग करके गुरु99 टेबल को शिक्षा और परियोजनाओं के कॉलम परिवारों के साथ परिभाषित करें

ऊपर दिए गए स्क्रीनशॉट से, हम निम्नलिखित कार्यों को निष्पादित कर रहे हैं:

  • HTable का उपयोग करनाDescriptया फिर, हम HBase में “guru99” टेबल बना सकते हैं।
  • addFamily विधि का उपयोग करके, हम "शिक्षा" और "परियोजनाओं" को "गुरु99" तालिका में कॉलम परिवारों के रूप में जोड़ते हैं।

नीचे दिया गया कोड HBase से कनेक्शन स्थापित करेगा और दो कॉलम परिवारों के साथ "guru99" टेबल बनाएगा। इस कोड को HBaseConnection.java दस्तावेज़ के नीचे रखें:

// Place this code inside Hbase connection
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
Import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

यह आवश्यक कोड है जिसे आपको चलाने से पहले HBaseConnection.java में डालना होगा। Java कार्यक्रम.

इस प्रोग्राम को चलाने के बाद, यह HBase के साथ एक कनेक्शन स्थापित करता है और बदले में, कॉलम नामों के साथ एक टेबल बनाता है।

  • टेबल का नाम “guru99” है।
  • स्तंभ परिवारों में "शिक्षा" और "परियोजनाएं" शामिल हैं।

चरण 4) HBase में बनाई गई तालिका की जाँच करें

हम HBase शेल मोड में "list" कमांड का उपयोग करके यह जांच सकते हैं कि HBase में "guru99" टेबल दो कॉलम परिवारों के साथ बनाई गई है या नहीं। "list" कमांड HBase में बनाई गई सभी तालिकाओं के बारे में जानकारी देती है।

एचबेस शेल में लिस्ट कमांड चलाने से नई टेबल की पुष्टि हो जाती है, जैसा कि नीचे दिखाया गया है:

HBase शेल लिस्ट कमांड का आउटपुट दर्शाता है कि गुरु99 टेबल बनाई गई थी।

  • Code "list" कमांड को निष्पादित करके HBase शेल में जांच करें।
  • यदि हम “list” कमांड चलाते हैं, तो यह HBase में बनाई गई तालिका को प्रदर्शित करता है। हमारे मामले में, हम देख सकते हैं कि “guru99” तालिका बनाई गई है।

HBase शैल के साथ तालिका बनाएँ

के अतिरिक्त Java API का उपयोग करके, आप सीधे HBase शेल से एक टेबल बना सकते हैं, जो त्वरित परीक्षणों के लिए टेबल सेट अप करने का सबसे तेज़ तरीका है। शेल का उपयोग करके HBase में टेबल बनाने का सिंटैक्स इस प्रकार है:

Syntax: create <tablename>, <columnfamilyname>

उदाहरण:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

उपरोक्त उदाहरण बताता है कि प्रत्येक कॉलम परिवार के लिए दिए गए विनिर्देशों के अनुसार निर्दिष्ट नाम के साथ HBase में एक टेबल कैसे बनाई जाती है। इसके अलावा, हम इसमें कुछ टेबल-स्कोप एट्रिब्यूट भी पास कर सकते हैं।

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

यहां {NAME=>'Edu', VERSIONS=>…} ब्लॉक “Edu” नाम का एक कॉलम परिवार और उसमें मौजूद सेल वर्ज़नों की संख्या निर्धारित करता है। यह बड़ी संख्या केवल उदाहरण के लिए है; व्यवहार में, VERSIONS का मान 3 या 5 जैसा छोटा होता है।

एचबेस टेबल की सूची बनाएं, उनका वर्णन करें और उनकी पुष्टि करें।

HBase में टेबल बनाने की प्रक्रिया का पहला चरण टेबल निर्माण ही है। एक बार "guru99" टेबल बन जाने के बाद, कुछ सामान्य कमांड की मदद से आप डेटा पढ़ने, लिखने या संशोधित करने से पहले उसकी स्थिति की जांच और पुष्टि कर सकते हैं। आप इन सभी कमांड को यहां से चला सकते हैं। एचबेस शेल.

list कमांड HBase में मौजूद सभी उपयोगकर्ता तालिकाओं को लौटाता है:

hbase> list

डिस्क्राइब कमांड किसी टेबल की संरचना को दर्शाती है, जिसमें उसके कॉलम परिवार और यह जानकारी शामिल होती है कि वह वर्तमान में सक्रिय है या नहीं:

hbase> describe 'guru99'

exists कमांड यह जांचता है कि कोई टेबल मौजूद है या नहीं, और is_enabled यह बताता है कि टेबल में डेटा राइट स्वीकार किया जा सकता है या नहीं।

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

ये रीड-ओनली चेक किसी भी समय सुरक्षित रूप से चलाए जा सकते हैं। डेटा लोड करने से पहले यह पुष्टि करने का सबसे तेज़ तरीका है कि टेबल सही ढंग से बनाई गई है और उसके कॉलम परिवारों की समीक्षा करना भी आसान है।

एक HBase टेबल को बदलें

HBase टेबल का स्कीमा निर्माण के बाद स्थिर नहीं रहता है। ऑल्टर कमांड टेबल को दोबारा बनाए बिना उसके कॉलम फ़ैमिली और टेबल-स्कोप एट्रिब्यूट्स को बदल देता है। आपके HBase संस्करण के आधार पर, आपको पहले टेबल को निष्क्रिय करना पड़ सकता है, फिर ऑल्टर कमांड चलाकर उसे दोबारा सक्रिय करना पड़ सकता है।

“guru99” टेबल में एक नया कॉलम परिवार जोड़ने के लिए:

hbase> alter 'guru99', {NAME => 'contact'}

किसी कॉलम परिवार के कितने संस्करण रखे जा सकते हैं, यह निर्धारित करने के लिए:

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

टेबल से कॉलम फ़ैमिली को हटाने के लिए:

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

आप टेबल-स्कोप एट्रिब्यूट्स को भी बदल सकते हैं। उदाहरण के लिए, टेबल को रीड-ओनली मार्क करें, या अधिकतम रीजन फ़ाइल आकार को 128 एमबी पर सेट करें:

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

क्योंकि ऑल्टर स्कीमा को फिर से लिखता है, इसलिए प्रोडक्शन टेबल पर बदलावों की सावधानीपूर्वक योजना बनाएं और बाद में डिस्क्राइब का उपयोग करके परिणाम की पुष्टि करें।

HBase टेबल को निष्क्रिय, सक्रिय और हटाएं

किसी टेबल को हटाने या उसमें कुछ बदलाव करने के लिए, HBase को पहले उसे डिसेबल करना आवश्यक होता है। डिसेबल करने से टेबल ऑफ़लाइन हो जाती है, जिससे कोई भी क्लाइंट उस पर रीड या राइट नहीं कर सकता, और इस प्रकार संरचनात्मक बदलाव सुरक्षित हो जाते हैं।

किसी टेबल को निष्क्रिय करें और is_disabled फ़ंक्शन का उपयोग करके उसकी स्थिति की जांच करें:

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

रीड और राइट ऑपरेशन फिर से शुरू करने के लिए टेबल को दोबारा सक्षम करें:

hbase> enable 'guru99'

किसी टेबल को ड्रॉप करने से पहले उसे डिसेबल करना होगा। ड्रॉपping यह टेबल और उसके सभी डेटा को स्थायी रूप से हटा देता है, इसलिए इसका उपयोग सावधानी से करें:

hbase> disable 'guru99'
hbase> drop 'guru99'

एक साथ कई टेबल हटाने के लिए, drop_all कमांड उन सभी टेबल को डिलीट कर देता है जिनका नाम रेगुलर एक्सप्रेशन से मेल खाता है। create, alter, disable, enable और drop कमांड मिलकर टेबल के पूरे जीवन चक्र को कवर करते हैं। डेटा को संभालना एचबेस टेबल में।

अक्सर पूछे जाने वाले प्रश्न

सर्वोत्तम अभ्यास के अनुसार कॉलम फ़ैमिली की संख्या कम रखी जाती है, आदर्श रूप से एक से तीन। HBase एक क्षेत्र की सभी फ़ैमिली को एक साथ फ्लश और कॉम्पैक्ट करता है, इसलिए अतिरिक्त फ़ैमिली डेटा को अधिक फ़ाइलों में फैला देती हैं और रीड और राइट गति को धीमा कर देती हैं। संभव होने पर संबंधित कॉलम को एक ही फ़ैमिली में समूहित करें।

नहीं। बनाते समय आप केवल कॉलम फ़ैमिली परिभाषित करते हैं। कॉलम क्वालिफ़ायर गतिशील होते हैं और डेटा लिखते समय किसी भी पंक्ति में जोड़े जा सकते हैं। यह स्कीमा-लचीला डिज़ाइन प्रत्येक पंक्ति को तालिका में पहले बदलाव किए बिना अलग-अलग कॉलम रखने की अनुमति देता है।

'guru99' ट्रंकेट कमांड का उपयोग करें, जो टेबल को निष्क्रिय कर देता है, उसे हटा देता है और उसी कॉलम फैमिली के साथ उसे फिर से बनाता है। स्कीमा बरकरार रहता है जबकि प्रत्येक पंक्ति हटा दी जाती है। यह एक-एक करके पंक्तियों को हटाने की तुलना में तेज़ और अधिक सुव्यवस्थित है।

इस उदाहरण में HBaseAdmin और HTable का उपयोग किया गया है।Descriptया, दोनों को HBase 1.0 के बाद से अप्रचलित कर दिया गया है। आधुनिक कोड ConnectionFactory के माध्यम से Connection से एक Admin ऑब्जेक्ट प्राप्त करता है और Table के साथ स्कीमा बनाता है।Descriptया बिल्डर और कॉलम परिवारDescriptorBuilder. टेबल बनाने का लॉजिक पहले जैसा ही रहता है।

VERSIONS यह निर्धारित करता है कि किसी कॉलम परिवार के प्रत्येक सेल के कितने टाइमस्टैम्प्ड संस्करण रखे जाते हैं। डिफ़ॉल्ट मान 1 है। get या scan कमांड का उपयोग करके पुराने संस्करणों का अनुरोध करने पर, उन्हें तब तक लौटाया जाता है जब तक कि रखी गई संख्या पार न हो जाए, जिसके बाद संपीडन प्रक्रिया सबसे पुराने सेल को हटा देती है।

HBase उन बहुत बड़े, विरल डेटासेटों के लिए उपयुक्त है जिन्हें Hadoop और HDFS के ऊपर तेज़ रैंडम रीड और राइट की आवश्यकता होती है। इसके विशिष्ट उपयोगों में टाइम-सीरीज़ डेटा, मैसेजिंग और रीयल-टाइम एनालिटिक्स शामिल हैं, जहाँ टेबल कई नोड्स में अरबों पंक्तियों तक बढ़ जाती हैं।

एआई कोडिंग सहायक और बड़े भाषा मॉडल सरल भाषा के संकेतों से क्रिएट, ऑल्टर और ड्रॉप कमांड तैयार करते हैं, कॉलम-फ़ैमिली डिज़ाइन की व्याख्या करते हैं और ड्रॉप जैसे जोखिम भरे ऑपरेशनों को चिह्नित करते हैं।ping एक टेबल। मशीन लर्निंग एक्सेस पैटर्न का विश्लेषण करके बेहतर रो-की और फैमिली लेआउट की सिफारिश भी कर सकती है, हालांकि प्रत्येक सुझाव को एक इंजीनियर द्वारा सत्यापित किया जाना चाहिए।

हां. गिटहब कोपिलॉट यह HBase शेल कमांड उत्पन्न कर सकता है और Java निर्माण, परिवर्तन और निष्कासन के लिए क्लाइंट कोडping संक्षिप्त टिप्पणी से सारणी। Revइसे चलाने से पहले सही टेबल नाम, कॉलम परिवार और वर्तमान एडमिन एपीआई के लिए इसका आउटपुट देखें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: