HBase Opret tabel med Java API & Shell eksempel

⚡ Smart opsummering

HBase gemmer data i tabeller, og du kan oprette og håndtere disse tabeller på to måder: via Java API med HTableDescripteller og HBaseAdmin, eller direkte i HBase-shellen ved hjælp af create-kommandoen.

  • ☕ Java API'er: Opret tabeller i kode med HTableDescripteller, H-kolonneDescripteller og HBaseAdmin.
  • 🐚 Shell-oprettelse: Kommandoen `create` opbygger en tabel ud fra et navn og en eller flere kolonnefamilier.
  • 🧬 Kolonnefamilier: Hver tabel skal bruge mindst én kolonnefamilie, som defineres, når tabellen oprettes.
  • 🔧 Ændre tabeller: Kommandoen alter tilføjer kolonnefamilier, angiver VERSIONS eller ændrer tabel-scope-attributter.
  • 🗑️ Tabellivscyklus: Deaktiver en tabel, før du ændrer eller sletter den, og aktiver den derefter igen for at genoptage skrivninger.
  • 🤖 AI-assistance: AI-assistenter udarbejder udkast til oprettelse, ændring og sletning af kommandoer og gennemgår designet af kolonnefamilier.

HBase opretter tabel med Java Eksempel på API- og shell-kommando

Sådan opretter du tabel i HBase med Java API

I HBase kan tabeller oprettes på to måder: via Java API og gennem HBase-shellen. Dette afsnit dækker Java API, som lader en applikation oprette tabeller og indlæse data programmatisk som en del af et større job.

Gennem Java API kan vi oprette tabeller i HBase og også indlæse data i tabeller vha Java kodning. De to ting, vi sætter op her, er:

  • Etablering af forbindelse med HBase gennem Java API.
  • Ved brug af Eclipse forum Java kodning, debugging og testning.

Følgende er trinene til at oprette tabeller i HBase igennem Java API.

Trin 1) Opret en Java Projekt i Eclipse

I dette trin skal vi skabe en Java projekt i Eclipse for HBase-forbindelsen, med navnet “HbaseConnection”.

The New Java Projektdialogboksen nedenfor viser, hvordan "HbaseConnection"-projektet konfigureres:

Eclipse Ny Java Projektdialogboks, der opretter HbaseConnection-projektet med en JavaSE-1.7 miljø

Hvis vi ser på skærmbilledet ovenfor:

  • Angiv projektnavnet i denne boks. I vores tilfælde er projektnavnet "HbaseConnection".
  • Markér dette felt for standardplaceringen, der skal gemmes. Her er /home/hduser/work/HbaseConnection stien.
  • Marker afkrydsningsfeltet for Java miljø her. I dette tilfælde JavaSE-1.7 er Java udgave.
  • Vælg den mulighed for, hvor du vil gemme filen. I vores tilfælde valgte vi den anden mulighed, "Opret en separat mappe til kilder og klassefiler".
  • Klik på knappen Udfør, hvilket opretter projektet "HbaseConnection" i Eclipse og åbner Eclipse hjemmeside.

Trin 2) Konfigurer byggestien i Eclipse

På Eclipse Følg disse trin for at åbne konfigurationen af ​​byggestien på hjemmesiden:

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

Skærmbilledet nedenfor viser højreklikmenuen, der bruges til at åbne konfigurationen af ​​byggestien:

Eclipse højreklik på projektets menu, vælg Byg sti og derefter Konfigurer Byg sti

Fra ovenstående skærmbillede:

  • Højreklik på et projekt.
  • Vælg Byg sti.
  • Vælg Konfigurer byggesti.

Når du har klikket på Konfigurer byggesti, åbnes et andet vindue, som vist på skærmbilledet nedenfor. Fanen Biblioteker er der, hvor HBase- og Hadoop JAR-filerne føjes til projektet:

Eclipse Java Fanen Opbyg stibiblioteker tilføjer eksterne HBase- og Hadoop JAR-filer

I dette trin tilføjer vi de relevante HBase JAR'er til Java projekt som vist på skærmbilledet.

  • Vigtige JAR-filer, der skal tilføjes: hbase-0.94.8.jar og hadoop-core-1.1.2.jar.
  • Gå til fanen Biblioteker.
  • Tryk på indstillingen Tilføj eksterne JAR-filer.
  • Vælg de nødvendige vigtige JAR-filer.
  • Tryk på knappen Udfør for at tilføje disse filer til "src"-mappen. Java projekt under Biblioteker.

Når JAR-filerne er tilføjet, vises de under projektets "src"-placering som vist nedenfor:

Eclipse projektudforsker, der viser de tilføjede HBase- og Hadoop JAR-filer under projektkilden

Alle JAR-filer, der falder ind under projektet, er nu klar til brug med Hadoop-økosystemet.

Trin 3) Etabler HBase-forbindelsen

I dette trin oprettes HBase-forbindelsen ved hjælp af HBaseConnection.java Java kodning.

På Eclipse topmenu, udfør en Java program som vist nedenfor: Kør -> Kør som -> Java Applikation. Menuen nedenfor viser det program, der startes:

Eclipse Løb som Java Programmenu, der starter HBaseConnection-programmet

  • Vælg Kør.
  • Vælg Kør som Java Ansøgning.
  • Denne kode opretter en forbindelse med HBase via Java API.
  • Efter at have kørt denne kode, oprettes tabellen "guru99" i HBase med to kolonnefamilier med navnene "uddannelse" og "projekter". I øjeblikket oprettes kun det tomme skema i HBase.

Kodeuddraget nedenfor fremhæver HTableDescripteller og addFamily-kald, der bygger tabelskemaet:

Java kode ved hjælp af HTableDescripteller og addFamily for at definere guru99-tabellen med kolonnefamilierne for uddannelse og projekter

Fra skærmbilledet ovenfor udfører vi følgende funktioner:

  • Brug af HTableDescripteller vi kan oprette tabellen "guru99" i HBase.
  • Ved hjælp af addFamily-metoden tilføjer vi "uddannelse" og "projekter" som kolonnefamilier til tabellen "guru99".

Koden nedenfor etablerer en forbindelse med HBase og opretter tabellen "guru99" med to kolonnefamilier. Placer denne kode under HBaseConnection.java-dokumentet:

// 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......");
    }
}

Dette er den nødvendige kode, du skal placere i HBaseConnection.java, før du kører Java program.

Efter at have kørt dette program, etablerer det en forbindelse med HBase og opretter derefter en tabel med kolonnenavne.

  • Tabellens navn er “guru99”.
  • Kolonnefamilierne er "uddannelse" og "projekter".

Trin 4) Tjek den oprettede tabel i HBase

Vi kan kontrollere, om tabellen “guru99” er oprettet med to kolonnefamilier i HBase, ved at bruge HBase shell-tilstand med kommandoen “list”. Kommandoen “list” giver information om alle de tabeller, der er oprettet i HBase.

Kørsel af list-kommandoen i HBase-shellen bekræfter den nye tabel, som vist nedenfor:

HBase shell list-kommandooutput, der viser, at guru99-tabellen blev oprettet

  • Code tjekker i HBase-shellen ved at udføre kommandoen "list".
  • Hvis vi kører kommandoen "list", vises tabellen oprettet i HBase. I vores tilfælde kan vi se, at tabellen "guru99" er oprettet.

HBase Opret tabel med Shell

Udover Java API, kan du oprette en tabel direkte fra HBase-shell'en, hvilket er den hurtigste måde at konfigurere en tabel til hurtige tests. Syntaksen til at oprette en tabel i HBase ved hjælp af shell'en er:

Syntax: create <tablename>, <columnfamilyname>

Eksempel:-

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

Ovenstående eksempel forklarer, hvordan man opretter en tabel i HBase med det angivne navn i henhold til specifikationerne for hver kolonnefamilie. Derudover kan vi også overføre nogle tabel-scope-attributter til den.

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

Her angiver blokken {NAME=>'Edu', VERSIONS=>…} en kolonnefamilie med navnet "Edu" og antallet af celleversioner, den gemmer. Det store tal er kun illustrativt; i praksis er VERSIONS en lille værdi, såsom 3 eller 5.

Liste, beskrive og verificere HBase-tabeller

Oprettelse af en tabel er kun den første del af håndteringen af ​​tabeller i HBase. Når tabellen "guru99" findes, giver et par generelle kommandoer dig mulighed for at inspicere den og bekræfte dens tilstand, før du læser, skriver eller ændrer data. Du kan køre dem alle fra HBase skal.

Kommandoen `list` returnerer alle brugertabeller i HBase:

hbase> list

Kommandoen `describe` viser en tabels struktur, inklusive dens kolonnefamilier og om den i øjeblikket er aktiveret:

hbase> describe 'guru99'

Kommandoen exists kontrollerer, om en tabel er til stede, og is_enabled rapporterer, om tabellen kan acceptere skrivninger:

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

Disse skrivebeskyttede kontroller kan køres sikkert når som helst. De er den hurtigste måde at bekræfte, at en tabel er oprettet korrekt, og at gennemgå dens kolonnefamilier, før data indlæses.

Ændre en HBase-tabel

Et HBase-tabelskema er ikke rettet efter oprettelse. Kommandoen alter ændrer en tabels kolonnefamilier og tabel-scope-attributter uden at genskabe den. Afhængigt af din HBase-version skal du muligvis først deaktivere tabellen, derefter køre alter og aktivere den igen.

Sådan tilføjer du en ny kolonnefamilie til tabellen "guru99":

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

Sådan indstiller du, hvor mange versioner en kolonnefamilie gemmer:

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

Sådan sletter du en kolonnefamilie fra tabellen:

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

Du kan også ændre attributter for tabel-scope. For eksempel kan du markere tabellen som skrivebeskyttet, eller indstille den maksimale regionfilstørrelse til 128 MB:

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

Fordi alter omskriver skemaet, skal du omhyggeligt planlægge ændringerne i en produktionstabel og bekræfte resultatet bagefter med describe.

Deaktiver, aktivér og slet HBase-tabeller

For at fjerne en tabel eller anvende bestemte ændringer kræver HBase, at du først deaktiverer den. Deaktivering bringer tabellen offline, så ingen klient kan læse eller skrive til den, hvilket gør strukturelle ændringer sikre.

Deaktiver en tabel, og tjek dens tilstand med is_disabled:

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

Aktiver tabellen igen for at genoptage læsning og skrivning:

hbase> enable 'guru99'

En tabel skal deaktiveres, før den kan slettes.ping sletter tabellen og alle dens data permanent, så brug den med forsigtighed:

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

For at fjerne flere tabeller på én gang sletter drop_all alle tabeller, hvis navn matcher et regulært udtryk. Opret, ændr, deaktiver, aktiver og fjern sammen, og dæk hele livscyklussen for håndtering af data i HBase-tabeller.

Ofte Stillede Spørgsmål

Bedste praksis holder antallet af kolonnefamilier lavt, ideelt set en til tre. HBase tømmer og komprimerer alle familier i en region sammen, så ekstra familier spreder data på tværs af flere filer og sænker læsning og skrivning. Gruppér relaterede kolonner i en enkelt familie, når det er muligt.

Nej. Ved oprettelsen definerer du kun kolonnefamilier. Kolonnekvalifikatorer er dynamiske og kan tilføjes på enhver række, når du skriver data. Dette skemafleksible design lader hver række indeholde forskellige kolonner uden først at ændre tabellen.

Brug trunkeringen 'guru99', som deaktiverer tabellen, sletter den og genskaber den med de samme kolonnefamilier. Skemaet forbliver intakt, mens hver række fjernes. Dette er hurtigere og mere overskueligt end at slette rækker én ad gangen.

Eksemplet bruger HBaseAdmin og HTableDescripteller begge er udfaset siden HBase 1.0. Moderne kode henter et Admin-objekt fra en Connection via ConnectionFactory og bygger skemaet med TableDescriptellerBuilder og KolonnefamilieDescriptellerBuilder. Logikken for tabeloprettelse forbliver den samme.

VERSIONS angiver, hvor mange tidsstemplede versioner af hver celle en kolonnefamilie gemmer. Standardværdien er 1. Anmodning om ældre versioner med en get- eller scan-funktion returnerer dem, indtil det beholdte antal overskrides, hvorefter komprimering fjerner de ældste celler.

HBase er egnet til meget store, sparsomme datasæt, der kræver hurtige tilfældige læsninger og skrivninger oven på Hadoop og HDFS. Typiske anvendelser omfatter tidsseriedata, messaging og realtidsanalyse, hvor tabeller vokser til milliarder af rækker på tværs af mange noder.

AI-kodningsassistenter og store sprogmodeller udarbejder oprettelses-, ændrings- og sletningskommandoer fra letforståelige prompter, forklarer kolonnefamiliedesign og markerer risikable handlinger såsom sletning.ping en tabel. Maskinlæring kan også analysere adgangsmønstre for at anbefale bedre række-nøgle- og familielayouts, selvom en tekniker bør verificere hvert forslag.

Ja. GitHub Copilot kan generere HBase shell-kommandoer og Java klientkode til oprettelse, ændring og sletningping tabeller fra en kort kommentar. RevSe dens output for det korrekte tabelnavn, kolonnefamilier og den aktuelle Admin API, før du kører den.

Opsummer dette indlæg med: