HBase Tabel maken met Java API & Shell-voorbeeld

⚡ Slimme samenvatting

HBase slaat gegevens op in tabellen, en je kunt die tabellen op twee manieren aanmaken en beheren: via de Java API met HTableDescriptof via HBaseAdmin, of rechtstreeks in de HBase-shell met behulp van het commando `create`.

  • Java API: Maak tabellen in code met HTableDescriptof HColumnDescriptof, en HBaseAdmin.
  • 🐚 Shell maken: Met het commando 'create' wordt een tabel gemaakt op basis van een naam en een of meer kolomfamilies.
  • 🧬 Kolomfamilies: Elke tabel heeft minstens één kolomfamilie nodig, die wordt gedefinieerd bij het aanmaken van de tabel.
  • 🔧 Tabellen wijzigen: Met het commando `alter` kunt u kolomfamilies toevoegen, versies instellen of tabelspecifieke attributen wijzigen.
  • 🗑️ Levenscyclus van de tabel: Schakel een tabel uit voordat u deze wijzigt of verwijdert, en schakel deze vervolgens weer in om het schrijfproces te hervatten.
  • 🤖 AI-ondersteuning: AI-assistenten stellen opdrachten op voor het maken, wijzigen en verwijderen van tekst, en beoordelen het ontwerp van kolomfamilies.

HBase tabel maken met Java API- en shell-opdrachtvoorbeeld

Hoe u een tabel in HBase maakt met Java API

In HBase kunnen tabellen op twee manieren worden aangemaakt: via de Java API en via de HBase-shell. Deze sectie behandelt de Java Een API waarmee een applicatie programmatisch tabellen kan aanmaken en gegevens kan laden als onderdeel van een grotere taak.

Door Java API, we kunnen tabellen maken in HBase en ook gegevens in tabellen laden met behulp van Java programmeren. De twee dingen die we hier hebben ingesteld zijn:

  • Verbinding maken met HBase via Java API.
  • gebruik Eclipse besteld, Java Coderen, debuggen en testen.

Hieronder staan ​​de stappen om tabellen in HBase te maken via Java API.

Stap 1) Maak een Java Projecteren in Eclipse

In deze stap gaan we een Java project in Eclipse voor de HBase-verbinding, genaamd "HbaseConnection".

De Nieuwe Java Het onderstaande projectdialoogvenster toont hoe het project "HbaseConnection" wordt ingesteld:

Eclipse Nieuwe Java Projectdialoogvenster waarmee het HbaseConnection-project wordt aangemaakt met een JavaSE-1.7 omgeving

Als we naar de bovenstaande schermafbeelding kijken:

  • Voer de projectnaam in dit vak in. In ons geval is de projectnaam "HbaseConnection".
  • Vink dit vakje aan voor de standaardlocatie waar de bestanden worden opgeslagen. In dit geval is het pad /home/hduser/work/HbaseConnection.
  • Vink het vakje aan voor de Java omgeving hier. In dit geval JavaSE-1.7 is de Java editie.
  • Kies de optie waar je het bestand wilt opslaan. In ons geval hebben we de tweede optie geselecteerd: "Een aparte map maken voor bronbestanden en klassebestanden".
  • Klik op de knop Voltooien, waarmee het project "HbaseConnection" wordt aangemaakt. Eclipse en opent de Eclipse home page.

Stap 2) Configureer het bouwpad in Eclipse

Op de Eclipse Volg deze stappen om de configuratie van het buildpad te openen:

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

De onderstaande schermafbeelding toont het rechtermuisklikmenu waarmee de configuratie van het buildpad kan worden geopend:

Eclipse Selecteer in het rechtermuisklikmenu van het project 'Build Path' en vervolgens 'Configure Build Path'.

Uit de bovenstaande schermafbeelding:

  • Klik met de rechtermuisknop op een project.
  • Selecteer het bouwpad.
  • Selecteer 'Buildpad configureren'.

Na het klikken op 'Buildpad configureren' wordt een nieuw venster geopend, zoals te zien is in de onderstaande schermafbeelding. Op het tabblad 'Bibliotheken' worden de HBase- en Hadoop-JAR-bestanden aan het project toegevoegd.

Eclipse Java Voeg externe HBase- en Hadoop-JAR-bestanden toe via het tabblad 'Build Path Libraries'.

In deze stap voegen we de relevante HBase JAR-bestanden toe aan de Java project zoals weergegeven in de schermafbeelding.

  • Belangrijke JAR-bestanden die toegevoegd moeten worden: hbase-0.94.8.jar en hadoop-core-1.1.2.jar.
  • Ga naar het tabblad Bibliotheken.
  • Selecteer de optie 'Externe JAR-bestanden toevoegen'.
  • Selecteer de benodigde belangrijke JAR-bestanden.
  • Druk op de knop Voltooien om deze bestanden toe te voegen aan de "src" van de Java project onder de noemer Bibliotheken.

Nadat de JAR-bestanden zijn toegevoegd, verschijnen ze in de "src"-map van het project, zoals hieronder weergegeven:

Eclipse Projectverkenner toont de toegevoegde HBase- en Hadoop-JAR-bestanden onder de projectbroncode.

Alle JAR-bestanden die onder het project vallen, zijn nu klaar voor gebruik binnen het Hadoop-ecosysteem.

Stap 3) Breng de HBase-verbinding tot stand

In deze stap wordt met behulp van HBaseConnection.java de HBase-verbinding tot stand gebracht. Java codering.

Op de Eclipse bovenste menu, uitvoeren Java Programma zoals hieronder weergegeven: Uitvoeren -> Uitvoeren als -> Java Applicatie. Het onderstaande menu toont het programma dat wordt gestart:

Eclipse Rennen als Java Het toepassingsmenu waarmee het HBaseConnection-programma wordt gestart.

  • Selecteer Uitvoeren.
  • Selecteer 'Uitvoeren als' Java Toepassing.
  • Deze code legt een verbinding met HBase tot stand via Java API.
  • Na het uitvoeren van deze code wordt de tabel "guru99" in HBase aangemaakt met twee kolomfamilies genaamd "education" en "projects". Momenteel wordt er in HBase alleen een leeg schema aangemaakt.

Het onderstaande codefragment illustreert de HTable.Descriptof de addFamily-aanroepen die het tabelschema opbouwen:

Java code met behulp van HTableDescriptof en voeg Familie toe om de guru99-tabel te definiëren met de kolomfamilies voor onderwijs en projecten

Uit de bovenstaande schermafbeelding blijkt dat we de volgende functies uitvoeren:

  • HTable gebruikenDescriptOf we kunnen de tabel "guru99" in HBase aanmaken.
  • Met behulp van de addFamily-methode voegen we 'education' en 'projects' toe als kolomfamilies aan de tabel 'guru99'.

De onderstaande code legt een verbinding met HBase tot stand en maakt de tabel "guru99" aan met twee kolomfamilies. Plaats deze code in het document 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......");
    }
}

Dit is de code die u in HBaseConnection.java moet plaatsen voordat u het programma uitvoert. Java programma.

Na het uitvoeren van dit programma wordt een verbinding met HBase tot stand gebracht, waarna een tabel met kolomnamen wordt aangemaakt.

  • De tabelnaam is “guru99”.
  • De kolomcategorieën zijn 'onderwijs' en 'projecten'.

Stap 4) Controleer de gemaakte tabel in HBase

We kunnen controleren of de tabel "guru99" in HBase is aangemaakt met twee kolomfamilies door de HBase-shellmodus te gebruiken met het commando "list". Het commando "list" geeft informatie over alle tabellen die in HBase zijn aangemaakt.

Het uitvoeren van het commando `list` in de HBase-shell bevestigt de aanwezigheid van de nieuwe tabel, zoals hieronder weergegeven:

Uitvoer van het HBase shell list commando waaruit blijkt dat de guru99 tabel is aangemaakt.

  • Code Dit kan in de HBase-shell door het commando "list" uit te voeren.
  • Als we het commando "list" uitvoeren, worden de tabellen weergegeven die in HBase zijn aangemaakt. In ons geval zien we dat de tabel "guru99" is aangemaakt.

HBase Tabel maken met shell

Naast Java Via de API kun je rechtstreeks vanuit de HBase-shell een tabel aanmaken. Dit is de snelste manier om een ​​tabel op te zetten voor snelle tests. De syntax om een ​​tabel in HBase aan te maken via de shell is:

Syntax: create <tablename>, <columnfamilyname>

Voorbeeld:-

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

Het bovenstaande voorbeeld laat zien hoe je in HBase een tabel aanmaakt met de opgegeven naam, volgens de specificaties voor elke kolomfamilie. Daarnaast kunnen we er ook enkele tabelspecifieke attributen aan meegeven.

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

Hier stelt het blok {NAME=>'Edu', VERSIONS=>…} een kolomfamilie in met de naam "Edu" en het aantal celversies dat bewaard wordt. Het grote getal is slechts ter illustratie; in de praktijk is VERSIONS een kleine waarde, zoals 3 of 5.

Lijst, beschrijf en verifieer HBase-tabellen

Het aanmaken van een tabel is slechts het eerste deel van het werken met tabellen in HBase. Zodra de tabel "guru99" bestaat, kunt u met een paar algemene commando's de status ervan controleren voordat u gegevens leest, schrijft of wijzigt. U kunt ze allemaal uitvoeren vanuit de HBase-schaal.

Het commando `list` geeft alle gebruikerstabellen in HBase weer:

hbase> list

Het commando `describe` toont de structuur van een tabel, inclusief de kolomfamilies en of deze momenteel is ingeschakeld:

hbase> describe 'guru99'

Het commando `exists` controleert of een tabel aanwezig is, en `is_enabled` geeft aan of de tabel schrijfbewerkingen kan accepteren:

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

Deze alleen-lezen controles kunnen op elk moment veilig worden uitgevoerd. Ze vormen de snelste manier om te bevestigen dat een tabel correct is aangemaakt en om de kolomfamilies te controleren voordat gegevens worden geladen.

Een HBase-tabel wijzigen

Het schema van een HBase-tabel is na aanmaak niet vastgelegd. Het `alter`-commando wijzigt de kolomfamilies en tabelspecifieke attributen van een tabel zonder deze opnieuw aan te maken. Afhankelijk van uw HBase-versie moet u de tabel mogelijk eerst uitschakelen, vervolgens het `alter`-commando uitvoeren en de tabel daarna weer inschakelen.

Om een ​​nieuwe kolomfamilie toe te voegen aan de tabel “guru99”:

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

Om in te stellen hoeveel versies een kolomfamilie bewaart:

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

Om een ​​kolomfamilie uit de tabel te verwijderen:

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

U kunt ook tabelspecifieke attributen wijzigen. U kunt de tabel bijvoorbeeld als alleen-lezen markeren of de maximale grootte van het regiobestand instellen op 128 MB.

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

Omdat `alter` het schema herschrijft, moet u wijzigingen zorgvuldig plannen op een productietabel en het resultaat daarna bevestigen met `describe`.

HBase-tabellen uitschakelen, inschakelen en verwijderen

Om een ​​tabel te verwijderen of bepaalde wijzigingen aan te brengen, moet je deze in HBase eerst uitschakelen. Door de tabel uit te schakelen, wordt deze offline gezet, zodat geen enkele client er meer in kan lezen of schrijven. Dit maakt structurele wijzigingen veilig.

Een tabel uitschakelen en de status ervan controleren met is_disabled:

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

Schakel de tabel weer in om het lezen en schrijven te hervatten:

hbase> enable 'guru99'

Een tabel moet worden uitgeschakeld voordat deze kan worden verwijderd. Verwijderenping Verwijdert de tabel en alle bijbehorende gegevens permanent, dus gebruik deze functie met de nodige voorzichtigheid:

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

Om meerdere tabellen tegelijk te verwijderen, verwijdert drop_all elke tabel waarvan de naam overeenkomt met een reguliere expressie. De commando's create, alter, disable, enable en drop dekken samen de volledige levenscyclus van een tabel. gegevensverwerking in HBase-tabellen.

Veelgestelde vragen

Het is aan te raden het aantal kolomfamilies laag te houden, idealiter één tot drie. HBase spoelt en comprimeert alle families van een regio tegelijk, waardoor extra families de gegevens over meer bestanden verspreiden en lees- en schrijfbewerkingen vertragen. Groepeer gerelateerde kolommen waar mogelijk in één familie.

Nee. Bij het aanmaken definieert u alleen kolomfamilies. Kolomkwalificaties zijn dynamisch en kunnen aan elke rij worden toegevoegd wanneer u gegevens schrijft. Dankzij dit flexibele schemaontwerp kan elke rij verschillende kolommen bevatten zonder eerst de tabel aan te passen.

Gebruik `truncate 'guru99'`, waarmee de tabel wordt uitgeschakeld, verwijderd en opnieuw aangemaakt met dezelfde kolomfamilies. Het schema blijft intact, terwijl elke rij wordt verwijderd. Dit is sneller en overzichtelijker dan het één voor één verwijderen van rijen.

Het voorbeeld maakt gebruik van HBaseAdmin en HTable.Descriptof, beide verouderd sinds HBase 1.0. Moderne code verkrijgt een Admin-object van een Connection via ConnectionFactory en bouwt het schema op met TableDescriptof Bouwer en KolomfamilieDescriptorBuilder. De logica voor het aanmaken van tabellen blijft hetzelfde.

VERSIONS bepaalt hoeveel versies met tijdstempels van elke cel een kolomfamilie bewaart. De standaardwaarde is 1. Oudere versies opvragen met een get- of scan-bewerking retourneert deze totdat het bewaarde aantal is overschreden, waarna compactie de oudste cellen verwijdert.

HBase is geschikt voor zeer grote, dunbevolkte datasets die snelle willekeurige lees- en schrijfbewerkingen vereisen bovenop Hadoop en HDFS. Typische toepassingen zijn tijdreeksdata, berichtenverkeer en realtime analyses waarbij tabellen uitgroeien tot miljarden rijen verspreid over vele knooppunten.

AI-codeerassistenten en grote taalmodellen genereren commando's voor aanmaken, wijzigen en verwijderen op basis van eenvoudige tekstprompts, leggen het ontwerp van kolomfamilies uit en signaleren risicovolle bewerkingen zoals verwijderen.ping een tabel. Machine learning kan ook toegangspatronen analyseren om betere rij-sleutel- en familie-indelingen aan te bevelen, hoewel een engineer elke suggestie moet verifiëren.

Ja. GitHub-copiloot kan HBase-shellopdrachten genereren en Java Clientcode voor het aanmaken, wijzigen en verwijderen van objecten.ping Tabellen uit een korte opmerking. RevControleer de uitvoer om de juiste tabelnaam, kolomfamilies en de huidige Admin API te vinden voordat u deze uitvoert.

Vat dit bericht samen met: