HBase Skapa tabell med Java API & Shell Exempel

⚡ Smart sammanfattning

HBase lagrar data i tabeller, och du kan skapa och hantera dessa tabeller på två sätt: genom Java API med HTableDescripteller och HBaseAdmin, eller direkt i HBase-skalet med hjälp av kommandot create.

  • Java API: Skapa tabeller i kod med HTableDescripteller, H-kolumnDescripteller och HBaseAdmin.
  • 🐚 Shell skapa: Kommandot create bygger en tabell från ett namn och en eller flera kolumnfamiljer.
  • 🧬 Kolumnfamiljer: Varje tabell behöver minst en kolumnfamilj, definierad när tabellen skapas.
  • 🔧 Ändra tabeller: Kommandot alter lägger till kolumnfamiljer, anger VERSIONS eller ändrar attribut för tabellomfattning.
  • 🗑️ Tabellens livscykel: Inaktivera en tabell innan du ändrar eller tar bort den, och aktivera den sedan igen för att återuppta skrivningar.
  • 🤖 AI-hjälp: AI-assistenter utarbetar kommandon för att skapa, ändra och ta bort dem samt granskar designen för kolumnfamiljer.

HBase skapar tabell med Java API- och shell-kommandoexempel

Hur man skapar tabell i HBase med Java API

I HBase kan tabeller skapas på två sätt: genom Java API och genom HBase-skalet. Det här avsnittet behandlar Java API, som låter en applikation skapa tabeller och ladda data programmatiskt som en del av ett större jobb.

Genom Java API kan vi skapa tabeller i HBase och även ladda data till tabeller med hjälp av Java kodning. De två saker vi sätter upp här är:

  • Upprätta en förbindelse med HBase genom Java API.
  • Använda Eclipse för Java kodning, felsökning och testning.

Följande är stegen för att skapa tabeller i HBase genom Java API.

Steg 1) Skapa en Java Projekt in Eclipse

I det här steget ska vi skapa en Java projekt i Eclipse för HBase-anslutningen, med namnet ”HbaseConnection”.

Den nya Java Projektdialogrutan nedan visar hur projektet ”HbaseConnection” konfigureras:

Eclipse Nytt Java Projektdialogruta som skapar HbaseConnection-projektet med en JavaSE-1.7-miljö

Om vi ​​tittar på skärmdumpen ovan:

  • Ange projektnamnet i den här rutan. I vårt fall är projektnamnet "HbaseConnection".
  • Markera den här rutan för standardplatsen där den ska sparas. Här är /home/hduser/work/HbaseConnection sökvägen.
  • Markera rutan för Java miljön här. I det här fallet JavaSE-1.7 är den Java upplagan.
  • Välj alternativet för var du vill spara filen. I vårt fall valde vi det andra alternativet, ”Skapa en separat mapp för källkoder och klassfiler”.
  • Klicka på knappen Slutför, vilket skapar projektet "HbaseConnection" i Eclipse och öppnar Eclipse hemsidan.

Steg 2) Konfigurera byggvägen i Eclipse

På Eclipse Följ dessa steg för att öppna konfigurationen för byggvägen på startsidan:

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

Skärmdumpen nedan visar högerklicksmenyn som används för att öppna konfigurationen av byggvägen:

Eclipse högerklicksmenyn i projektet, välj Byggsökväg och sedan Konfigurera Byggsökväg

Från skärmdumpen ovan:

  • Högerklicka på ett projekt.
  • Välj Byggväg.
  • Välj Konfigurera byggsökväg.

Efter att du klickat på Konfigurera byggsökväg öppnas ett annat fönster, som visas på skärmbilden nedan. Fliken Bibliotek är där HBase- och Hadoop JAR-filerna läggs till i projektet:

Eclipse Java Fliken Bygg sökvägsbibliotek lägger till externa HBase- och Hadoop JAR-filer

I det här steget lägger vi till relevanta HBase JAR-filer i Java projektet som visas på skärmdumpen.

  • Viktiga JAR-filer att läggas till: hbase-0.94.8.jar och hadoop-core-1.1.2.jar.
  • Gå till fliken Bibliotek.
  • Tryck på alternativet Lägg till externa JAR-filer.
  • Välj de viktiga JAR-filerna som krävs.
  • Tryck på knappen Slutför för att lägga till dessa filer i "src" för Java projekt under bibliotek.

När JAR-filerna har lagts till visas de under projektets "src"-plats enligt nedan:

Eclipse projektutforskaren som visar de tillagda HBase- och Hadoop JAR-filerna under projektkällan

Alla JAR-filer som omfattas av projektet är nu redo att användas med Hadoop-ekosystemet.

Steg 3) Upprätta HBase-anslutningen

I det här steget, med hjälp av HBaseConnection.java, upprättas HBase-anslutningen via Java kodning.

På Eclipse toppmenyn, kör en Java program som visas nedan: Kör -> Kör som -> Java Applikation. Menyn nedan visar programmet som startas:

Eclipse Spring som Java Programmeny som startar HBaseConnection-programmet

  • Välj Kör.
  • Välj Kör som Java Ansökan.
  • Denna kod upprättar en anslutning till HBase via Java API.
  • Efter att ha kört den här koden skapas tabellen "guru99" i HBase med två kolumnfamiljer med namnet "education" och "projects". För närvarande skapas endast det tomma schemat i HBase.

Kodutdraget nedan belyser HTableDescripteller och addFamily-anrop som bygger tabellschemat:

Java kod med hjälp av HTableDescripteller och addFamily för att definiera guru99-tabellen med kolumnfamiljerna utbildning och projekt

Från skärmdumpen ovan utför vi följande funktioner:

  • Använder HTableDescripteller så kan vi skapa tabellen "guru99" i HBase.
  • Med hjälp av addFamily-metoden lägger vi till ”utbildning” och ”projekt” som kolumnfamiljer i tabellen ”guru99”.

Koden nedan kommer att upprätta en anslutning med HBase och skapa tabellen "guru99" med två kolumnfamiljer. Placera denna kod 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......");
    }
}

Detta är den obligatoriska koden du måste placera i HBaseConnection.java innan du kör Java programmet.

Efter att ha kört det här programmet upprättar det en anslutning till HBase och skapar i sin tur en tabell med kolumnnamn.

  • Tabellnamnet är ”guru99”.
  • Kolumnfamiljerna är ”utbildning” och ”projekt”.

Steg 4) Kontrollera den skapade tabellen i HBase

Vi kan kontrollera om tabellen ”guru99” är skapad med två kolumnfamiljer i HBase genom att använda HBase-shellläget med kommandot ”list”. Kommandot ”list” ger information om alla tabeller som skapats i HBase.

Att köra list-kommandot i HBase-skalet bekräftar den nya tabellen, som visas nedan:

HBase shell list-kommandoutdata som visar att guru99-tabellen skapades

  • Code checka in HBase-skalet genom att köra kommandot "list".
  • Om vi ​​kör kommandot ”list” visas tabellen som skapats i HBase. I vårt fall kan vi se att tabellen ”guru99” har skapats.

HBase Skapa tabell med Shell

Förutom Java API, du kan skapa en tabell direkt från HBase-skalet, vilket är det snabbaste sättet att konfigurera en tabell för snabba tester. Syntaxen för att skapa en tabell i HBase med hjälp av skalet är:

Syntax: create <tablename>, <columnfamilyname>

Exempel:-

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

Exemplet ovan förklarar hur man skapar en tabell i HBase med det angivna namnet enligt specifikationerna för varje kolumnfamilj. Utöver detta kan vi också skicka in vissa tabell-scope-attribut till den.

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

Här anger blocket {NAME=>'Edu', VERSIONS=>…} en kolumnfamilj med namnet "Edu" och antalet cellversioner som den behåller. Det stora talet är bara illustrativt; i praktiken är VERSIONS ett litet värde som 3 eller 5.

Lista, beskriv och verifiera HBase-tabeller

Att skapa en tabell är bara den första delen av att hantera tabeller i HBase. När tabellen "guru99" finns finns det några allmänna kommandon som låter dig inspektera den och bekräfta dess tillstånd innan du läser, skriver eller ändrar data. Du kan köra dem alla från HBase skal.

Kommandot list returnerar varje användartabell i HBase:

hbase> list

Kommandot describe visar en tabells struktur, inklusive dess kolumnfamiljer och om den för närvarande är aktiverad:

hbase> describe 'guru99'

Kommandot exists kontrollerar om en tabell finns och is_enabled rapporterar om tabellen kan acceptera skrivningar:

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

Dessa skrivskyddade kontroller är säkra att köra när som helst. De är det snabbaste sättet att bekräfta att en tabell skapades korrekt och att granska dess kolumnfamiljer innan data laddas.

Ändra en HBase-tabell

Ett HBase-tabellschema är inte fixat efter att det skapats. Kommandot alter ändrar en tabells kolumnfamiljer och tabellomfångsattribut utan att återskapa den. Beroende på din HBase-version kan du behöva inaktivera tabellen först, sedan köra alter och aktivera den igen.

För att lägga till en ny kolumnfamilj i tabellen "guru99":

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

Så här anger du hur många versioner en kolumnfamilj behåller:

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

Så här tar du bort en kolumnfamilj från tabellen:

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

Du kan också ändra attribut för tabellens omfattning. Du kan till exempel markera tabellen som skrivskyddad eller ställa in den maximala filstorleken för regionen till 128 MB:

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

Eftersom alter skriver om schemat, planera ändringarna noggrant i en produktionstabell och bekräfta resultatet efteråt med describe.

Inaktivera, aktivera och ta bort HBase-tabeller

För att ta bort en tabell eller tillämpa vissa ändringar kräver HBase att du först inaktiverar den. Inaktivering gör att tabellen offlineförs så att ingen klient kan läsa eller skriva till den, vilket gör strukturella ändringar säkra.

Inaktivera en tabell och kontrollera dess tillstånd med is_disabled:

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

Aktivera tabellen igen för att återuppta läsning och skrivning:

hbase> enable 'guru99'

En tabell måste inaktiveras innan den kan tas bort.ping tar bort tabellen och all dess data permanent, så använd den med försiktighet:

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

För att ta bort flera tabeller samtidigt tar drop_all bort alla tabeller vars namn matchar ett reguljärt uttryck. Tillsammans kan du skapa, ändra, inaktivera, aktivera och ta bort tabellerna och täcka hela livscykeln för tabellen. hantering av data i HBase-tabeller.

Vanliga frågor

Bästa praxis håller antalet kolumnfamiljer lågt, helst en till tre. HBase tömmer och komprimerar alla familjer i en region tillsammans, så att extra familjer sprider data över fler filer och gör läsningar och skrivningar långsammare. Gruppera relaterade kolumner till en enda familj när det är möjligt.

Nej. Vid skapandet definierar du bara kolumnfamiljer. Kolumnkvalificerare är dynamiska och kan läggas till på vilken rad som helst när du skriver data. Denna schemaflexibla design låter varje rad innehålla olika kolumner utan att tabellen först behöver ändras.

Använd trunkera 'guru99', vilket inaktiverar tabellen, tar bort den och återskapar den med samma kolumnfamiljer. Schemat förblir intakt medan varje rad tas bort. Detta är snabbare och renare än att ta bort rader en i taget.

Exemplet använder HBaseAdmin och HTableDescripteller, båda är föråldrade sedan HBase 1.0. Modern kod hämtar ett Admin-objekt från en Connection via ConnectionFactory och bygger schemat med tabellen.DescriptorBuilder och ColumnFamilyDescriptellerBuilder. Logiken för att skapa tabeller förblir densamma.

VERSIONS anger hur många tidsstämplade versioner av varje cell en kolumnfamilj behåller. Standardvärdet är 1. Om äldre versioner begärs med en get- eller scan-funktion returneras de tills det behållna antalet överskrids, varefter komprimeringen tar bort de äldsta cellerna.

HBase passar för mycket stora, glesa datamängder som behöver snabba slumpmässiga läsningar och skrivningar utöver Hadoop och HDFS. Typiska användningsområden inkluderar tidsseriedata, meddelanden och realtidsanalys där tabeller växer till miljarder rader över många noder.

AI-kodningsassistenter och stora språkmodeller utarbetar kommandon för att skapa, ändra och ta bort från tydliga uppmaningar, förklarar kolumnfamiljsdesign och flaggar riskfyllda operationer som att ta bort kommandon.ping en tabell. Maskininlärning kan också analysera åtkomstmönster för att rekommendera bättre layouter för radnycklar och familjer, även om en ingenjör bör verifiera varje förslag.

Ja. GitHub Copilot kan generera HBase-shellkommandon och Java klientkod för att skapa, ändra och släppaping tabeller från en kort kommentar. Revvisa dess utdata för korrekt tabellnamn, kolumnfamiljer och aktuellt administratörs-API innan du kör det.

Sammanfatta detta inlägg med: