Java-toepassingen bouwen voor Apache HBase

Meer informatie over het maken van een Apache HBase-toepassing in Java. Gebruik vervolgens de toepassing met HBase in Azure HDInsight.

In de stappen in dit document wordt Apache Maven gebruikt om het project te maken en te bouwen. Maven is een hulpprogramma voor softwareprojectbeheer en begrip waarmee u software, documentatie en rapporten voor Java-projecten kunt bouwen.

Vereisten

Testomgeving

De omgeving die voor dit artikel wordt gebruikt, was een computer met Windows 10. De opdrachten zijn uitgevoerd in een opdrachtprompt en de verschillende bestanden zijn bewerkt met Kladblok. Wijzig dienovereenkomstig voor uw omgeving.

Voer vanaf een opdrachtprompt de volgende opdrachten in om een werkomgeving te maken:

IF NOT EXIST C:\HDI MKDIR C:\HDI
cd C:\HDI

Een Maven-project maken

  1. Voer de volgende opdracht in om een Maven-project met de naam hbaseapp te maken:

    mvn archetype:generate -DgroupId=com.microsoft.examples -DartifactId=hbaseapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
    cd hbaseapp
    mkdir conf
    

    Met deze opdracht maakt u een map met de naam hbaseapp op de huidige locatie, die een eenvoudig Maven-project bevat. Met de tweede opdracht wordt de werkmap gewijzigd in hbaseapp. Met de derde opdracht maakt u een nieuwe map, confdie later kan worden gebruikt. De hbaseapp map bevat de volgende items:

    • pom.xml: Het Project Object Model (POM) bevat informatie en configuratiegegevens die worden gebruikt om het project te bouwen.
    • src\main\java\com\microsoft\examples: Bevat de toepassingscode.
    • src\test\java\com\microsoft\examples: Bevat tests voor uw toepassing.
  2. Verwijder de gegenereerde voorbeeldcode. Verwijder de gegenereerde test- en toepassingsbestanden AppTest.javaen App.java voer de volgende opdrachten in:

    DEL src\main\java\com\microsoft\examples\App.java
    DEL src\test\java\com\microsoft\examples\AppTest.java
    

Het projectobjectmodel bijwerken

Zie voor een volledige verwijzing naar het pom.xml-bestand https://maven.apache.org/pom.html. Open pom.xml door de volgende opdracht in te voeren:

notepad pom.xml

Afhankelijkheden toevoegen

Voeg pom.xmlin de sectie de volgende tekst toe <dependencies> :

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-shaded-client</artifactId>
    <version>1.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-core</artifactId>
    <version>4.14.1-HBase-1.1</version>
</dependency>

In deze sectie wordt aangegeven dat het project hbase-client- en phoenix-core-onderdelen nodig heeft. Tijdens het compileren worden deze afhankelijkheden gedownload uit de standaard-Maven-opslagplaats. U kunt de zoekfunctie voor centrale opslagplaatsen van Maven gebruiken voor meer informatie over deze afhankelijkheid.

Belangrijk

Het versienummer van de hbase-client moet overeenkomen met de versie van Apache HBase die is geleverd met uw HDInsight-cluster. Gebruik de volgende tabel om het juiste versienummer te vinden.

HDInsight-clusterversie Apache HBase-versie die moet worden gebruikt
3,6 1.1.2
4.0 2.0.0

Zie Wat zijn de verschillende Apache Hadoop-onderdelen die beschikbaar zijn met HDInsight voor meer informatie over HDInsight-versies en -onderdelen.

Configuratie compileren

Met Maven-invoegtoepassingen kunt u de buildfasen van het project aanpassen. Deze sectie wordt gebruikt om invoegtoepassingen, resources en andere buildconfiguratieopties toe te voegen.

Voeg de volgende code toe aan het pom.xml bestand en sla het bestand op en sluit het. Deze tekst moet zich in de <project>...</project> tags in het bestand, bijvoorbeeld tussen </dependencies> en </project>.

<build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
    <resource>
        <directory>${basedir}/conf</directory>
        <filtering>false</filtering>
        <includes>
        <include>hbase-site.xml</include>
        </includes>
    </resource>
    </resources>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
        </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
        <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer">
            </transformer>
        </transformers>
        </configuration>
        <executions>
        <execution>
            <phase>package</phase>
            <goals>
            <goal>shade</goal>
            </goals>
        </execution>
        </executions>
    </plugin>
    </plugins>
</build>

In deze sectie wordt een resource (conf/hbase-site.xml) geconfigureerd die configuratiegegevens voor HBase bevat.

Notitie

U kunt ook configuratiewaarden instellen via code. Bekijk de opmerkingen in het CreateTable voorbeeld.

In deze sectie worden ook de Apache Maven Compiler-invoegtoepassing en de Apache Maven Shade-invoegtoepassing geconfigureerd. De compiler-invoegtoepassing wordt gebruikt om de topologie te compileren. De arceringsinvoegtoepassing wordt gebruikt om duplicatie van licenties te voorkomen in het JAR-pakket dat is gebouwd door Maven. Deze invoegtoepassing wordt gebruikt om de fout 'dubbele licentiebestanden' tijdens runtime op het HDInsight-cluster te voorkomen. Het gebruik van maven-shade-plugin met de ApacheLicenseResourceTransformer implementatie voorkomt de fout.

De maven-shade-plugin produceert ook een uber jar die alle afhankelijkheden bevat die vereist zijn voor de toepassing.

De hbase-site.xml downloaden

Gebruik de volgende opdracht om de HBase-configuratie van het HBase-cluster naar de conf map te kopiëren. Vervang door CLUSTERNAME de naam van uw HDInsight-cluster en voer vervolgens de opdracht in:

scp sshuser@CLUSTERNAME-ssh.azurehdinsight.net:/etc/hbase/conf/hbase-site.xml ./conf/hbase-site.xml

De toepassing maken

Een CreateTable-klasse implementeren

Voer de volgende opdracht in om een nieuw bestand CreateTable.javate maken en te openen. Selecteer Ja bij de prompt om een nieuw bestand te maken.

notepad src\main\java\com\microsoft\examples\CreateTable.java

Kopieer en plak vervolgens de volgende Java-code in het nieuwe bestand. Sluit vervolgens het bestand.

package com.microsoft.examples;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class CreateTable {
    public static void main(String[] args) throws IOException {
    Configuration config = HBaseConfiguration.create();

    // Example of setting zookeeper values for HDInsight
    // in code instead of an hbase-site.xml file
    //
    // config.set("hbase.zookeeper.quorum",
    //            "zookeepernode0,zookeepernode1,zookeepernode2");
    //config.set("hbase.zookeeper.property.clientPort", "2181");
    //config.set("hbase.cluster.distributed", "true");
    //
    //NOTE: Actual zookeeper host names can be found using Ambari:
    //curl -u admin:PASSWORD -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/hosts"

    //Linux-based HDInsight clusters use /hbase-unsecure as the znode parent
    config.set("zookeeper.znode.parent","/hbase-unsecure");

    // create an admin object using the config
    HBaseAdmin admin = new HBaseAdmin(config);

    // create the table...
    HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("people"));
    // ... with two column families
    tableDescriptor.addFamily(new HColumnDescriptor("name"));
    tableDescriptor.addFamily(new HColumnDescriptor("contactinfo"));
    admin.createTable(tableDescriptor);

    // define some people
    String[][] people = {
        { "1", "Marcel", "Haddad", "marcel@fabrikam.com"},
        { "2", "Franklin", "Holtz", "franklin@contoso.com" },
        { "3", "Dwayne", "McKee", "dwayne@fabrikam.com" },
        { "4", "Rae", "Schroeder", "rae@contoso.com" },
        { "5", "Rosalie", "burton", "rosalie@fabrikam.com"},
        { "6", "Gabriela", "Ingram", "gabriela@contoso.com"} };

    HTable table = new HTable(config, "people");

    // Add each person to the table
    //   Use the `name` column family for the name
    //   Use the `contactinfo` column family for the email
    for (int i = 0; i< people.length; i++) {
        Put person = new Put(Bytes.toBytes(people[i][0]));
        person.add(Bytes.toBytes("name"), Bytes.toBytes("first"), Bytes.toBytes(people[i][1]));
        person.add(Bytes.toBytes("name"), Bytes.toBytes("last"), Bytes.toBytes(people[i][2]));
        person.add(Bytes.toBytes("contactinfo"), Bytes.toBytes("email"), Bytes.toBytes(people[i][3]));
        table.put(person);
    }
    // flush commits and close the table
    table.flushCommits();
    table.close();
    }
}

Deze code is de klasse, waarmee een tabel met de CreateTable naam people wordt gemaakt en gevuld met een aantal vooraf gedefinieerde gebruikers.

Een SearchByEmail-klasse implementeren

Voer de volgende opdracht in om een nieuw bestand SearchByEmail.javate maken en te openen. Selecteer Ja bij de prompt om een nieuw bestand te maken.

notepad src\main\java\com\microsoft\examples\SearchByEmail.java

Kopieer en plak vervolgens de volgende Java-code in het nieuwe bestand. Sluit vervolgens het bestand.

package com.microsoft.examples;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.filter.RegexStringComparator;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.util.GenericOptionsParser;

public class SearchByEmail {
    public static void main(String[] args) throws IOException {
    Configuration config = HBaseConfiguration.create();

    // Use GenericOptionsParser to get only the parameters to the class
    // and not all the parameters passed (when using WebHCat for example)
    String[] otherArgs = new GenericOptionsParser(config, args).getRemainingArgs();
    if (otherArgs.length != 1) {
        System.out.println("usage: [regular expression]");
        System.exit(-1);
    }

    // Open the table
    HTable table = new HTable(config, "people");

    // Define the family and qualifiers to be used
    byte[] contactFamily = Bytes.toBytes("contactinfo");
    byte[] emailQualifier = Bytes.toBytes("email");
    byte[] nameFamily = Bytes.toBytes("name");
    byte[] firstNameQualifier = Bytes.toBytes("first");
    byte[] lastNameQualifier = Bytes.toBytes("last");

    // Create a regex filter
    RegexStringComparator emailFilter = new RegexStringComparator(otherArgs[0]);
    // Attach the regex filter to a filter
    //   for the email column
    SingleColumnValueFilter filter = new SingleColumnValueFilter(
        contactFamily,
        emailQualifier,
        CompareOp.EQUAL,
        emailFilter
    );

    // Create a scan and set the filter
    Scan scan = new Scan();
    scan.setFilter(filter);

    // Get the results
    ResultScanner results = table.getScanner(scan);
    // Iterate over results and print  values
    for (Result result : results ) {
        String id = new String(result.getRow());
        byte[] firstNameObj = result.getValue(nameFamily, firstNameQualifier);
        String firstName = new String(firstNameObj);
        byte[] lastNameObj = result.getValue(nameFamily, lastNameQualifier);
        String lastName = new String(lastNameObj);
        System.out.println(firstName + " " + lastName + " - ID: " + id);
        byte[] emailObj = result.getValue(contactFamily, emailQualifier);
        String email = new String(emailObj);
        System.out.println(firstName + " " + lastName + " - " + email + " - ID: " + id);
    }
    results.close();
    table.close();
    }
}

De SearchByEmail klasse kan worden gebruikt om een query uit te voeren op rijen per e-mailadres. Omdat er een reguliere expressiefilter wordt gebruikt, kunt u een tekenreeks of een reguliere expressie opgeven wanneer u de klasse gebruikt.

Een DeleteTable-klasse implementeren

Voer de volgende opdracht in om een nieuw bestand DeleteTable.javate maken en te openen. Selecteer Ja bij de prompt om een nieuw bestand te maken.

notepad src\main\java\com\microsoft\examples\DeleteTable.java

Kopieer en plak vervolgens de volgende Java-code in het nieuwe bestand. Sluit vervolgens het bestand.

package com.microsoft.examples;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteTable {
    public static void main(String[] args) throws IOException {
    Configuration config = HBaseConfiguration.create();

    // Create an admin object using the config
    HBaseAdmin admin = new HBaseAdmin(config);

    // Disable, and then delete the table
    admin.disableTable("people");
    admin.deleteTable("people");
    }
}

De DeleteTable klasse schoont de HBase-tabellen op die in dit voorbeeld zijn gemaakt door de tabel uit te schakelen en neer te zetten die door de CreateTable klasse is gemaakt.

De toepassing bouwen en verpakken

  1. Gebruik vanuit de hbaseapp map de volgende opdracht om een JAR-bestand te maken dat de toepassing bevat:

    mvn clean package
    

    Met deze opdracht wordt de toepassing gebouwd en verpakt in een JAR-bestand.

  2. Wanneer de opdracht is voltooid, bevat de map een bestand met de hbaseapp/target naam hbaseapp-1.0-SNAPSHOT.jar.

    Notitie

    Het hbaseapp-1.0-SNAPSHOT.jar bestand is een uber jar. Deze bevat alle afhankelijkheden die nodig zijn om de toepassing uit te voeren.

De JAR uploaden en taken uitvoeren (SSH)

Met de volgende stappen scp kopieert u het JAR-bestand naar het primaire hoofdknooppunt van uw Apache HBase-cluster in HDInsight. De ssh opdracht wordt vervolgens gebruikt om verbinding te maken met het cluster en het voorbeeld rechtstreeks op het hoofdknooppunt uit te voeren.

  1. Upload het JAR-bestand naar het cluster. Vervang door CLUSTERNAME de naam van uw HDInsight-cluster en voer vervolgens de volgende opdracht in:

    scp ./target/hbaseapp-1.0-SNAPSHOT.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net:hbaseapp-1.0-SNAPSHOT.jar
    
  2. Verbinding maken naar het HBase-cluster. Vervang door CLUSTERNAME de naam van uw HDInsight-cluster en voer vervolgens de volgende opdracht in:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Als u een HBase-tabel wilt maken met behulp van de Java-toepassing, gebruikt u de volgende opdracht in uw open ssh-verbinding:

    yarn jar hbaseapp-1.0-SNAPSHOT.jar com.microsoft.examples.CreateTable
    

    Met deze opdracht maakt u een HBase-tabel met de naam personen en vult deze met gegevens.

  4. Gebruik de volgende opdracht om te zoeken naar e-mailadressen die zijn opgeslagen in de tabel:

    yarn jar hbaseapp-1.0-SNAPSHOT.jar com.microsoft.examples.SearchByEmail contoso.com
    

    U ontvangt de volgende resultaten:

    Franklin Holtz - ID: 2
    Franklin Holtz - franklin@contoso.com - ID: 2
    Rae Schroeder - ID: 4
    Rae Schroeder - rae@contoso.com - ID: 4
    Gabriela Ingram - ID: 6
    Gabriela Ingram - gabriela@contoso.com - ID: 6
    
  5. Gebruik de volgende opdracht om de tabel te verwijderen:

    yarn jar hbaseapp-1.0-SNAPSHOT.jar com.microsoft.examples.DeleteTable
    

De JAR uploaden en taken uitvoeren (PowerShell)

In de volgende stappen wordt de Az-module van Azure PowerShell gebruikt om de JAR te uploaden naar de standaardopslag voor uw Apache HBase-cluster. HDInsight-cmdlets worden vervolgens gebruikt om de voorbeelden extern uit te voeren.

  1. Nadat u de AZ-module hebt geïnstalleerd en geconfigureerd, maakt u een bestand met de naam hbase-runner.psm1. Gebruik de volgende tekst als de inhoud van dit bestand:

     <#
     .SYNOPSIS
     Copies a file to the primary storage of an HDInsight cluster.
     .DESCRIPTION
     Copies a file from a local directory to the blob container for
     the HDInsight cluster.
     .EXAMPLE
     Start-HBaseExample -className "com.microsoft.examples.CreateTable"
     -clusterName "MyHDInsightCluster"
    
     .EXAMPLE
     Start-HBaseExample -className "com.microsoft.examples.SearchByEmail"
     -clusterName "MyHDInsightCluster"
     -emailRegex "contoso.com"
    
     .EXAMPLE
     Start-HBaseExample -className "com.microsoft.examples.SearchByEmail"
     -clusterName "MyHDInsightCluster"
     -emailRegex "^r" -showErr
     #>
    
     function Start-HBaseExample {
     [CmdletBinding(SupportsShouldProcess = $true)]
     param(
     #The class to run
     [Parameter(Mandatory = $true)]
     [String]$className,
    
     #The name of the HDInsight cluster
     [Parameter(Mandatory = $true)]
     [String]$clusterName,
    
     #Only used when using SearchByEmail
     [Parameter(Mandatory = $false)]
     [String]$emailRegex,
    
     #Use if you want to see stderr output
     [Parameter(Mandatory = $false)]
     [Switch]$showErr
     )
    
     Set-StrictMode -Version 3
    
     # Is the Azure module installed?
     FindAzure
    
     # Get the login for the HDInsight cluster
     $creds=Get-Credential -Message "Enter the login for the cluster" -UserName "admin"
    
     # The JAR
     $jarFile = "wasb:///example/jars/hbaseapp-1.0-SNAPSHOT.jar"
    
     # The job definition
     $jobDefinition = New-AzHDInsightMapReduceJobDefinition `
         -JarFile $jarFile `
         -ClassName $className `
         -Arguments $emailRegex
    
     # Get the job output
     $job = Start-AzHDInsightJob `
         -ClusterName $clusterName `
         -JobDefinition $jobDefinition `
         -HttpCredential $creds
     Write-Host "Wait for the job to complete ..." -ForegroundColor Green
     Wait-AzHDInsightJob `
         -ClusterName $clusterName `
         -JobId $job.JobId `
         -HttpCredential $creds
     if($showErr)
     {
     Write-Host "STDERR"
     Get-AzHDInsightJobOutput `
                 -Clustername $clusterName `
                 -JobId $job.JobId `
                 -HttpCredential $creds `
                 -DisplayOutputType StandardError
     }
     Write-Host "Display the standard output ..." -ForegroundColor Green
     Get-AzHDInsightJobOutput `
                 -Clustername $clusterName `
                 -JobId $job.JobId `
                 -HttpCredential $creds
     }
    
     <#
     .SYNOPSIS
     Copies a file to the primary storage of an HDInsight cluster.
     .DESCRIPTION
     Copies a file from a local directory to the blob container for
     the HDInsight cluster.
     .EXAMPLE
     Add-HDInsightFile -localPath "C:\temp\data.txt"
     -destinationPath "example/data/data.txt"
     -ClusterName "MyHDInsightCluster"
     .EXAMPLE
     Add-HDInsightFile -localPath "C:\temp\data.txt"
     -destinationPath "example/data/data.txt"
     -ClusterName "MyHDInsightCluster"
     -Container "MyContainer"
     #>
    
     function Add-HDInsightFile {
         [CmdletBinding(SupportsShouldProcess = $true)]
         param(
             #The path to the local file.
             [Parameter(Mandatory = $true)]
             [String]$localPath,
    
             #The destination path and file name, relative to the root of the container.
             [Parameter(Mandatory = $true)]
             [String]$destinationPath,
    
             #The name of the HDInsight cluster
             [Parameter(Mandatory = $true)]
             [String]$clusterName,
    
             #If specified, overwrites existing files without prompting
             [Parameter(Mandatory = $false)]
             [Switch]$force
         )
    
         Set-StrictMode -Version 3
    
         # Is the Azure module installed?
         FindAzure
    
         # Get authentication for the cluster
         $creds=Get-Credential
    
         # Does the local path exist?
         if (-not (Test-Path $localPath))
         {
             throw "Source path '$localPath' does not exist."
         }
    
         # Get the primary storage container
         $storage = GetStorage -clusterName $clusterName
    
         # Upload file to storage, overwriting existing files if -force was used.
         Set-AzStorageBlobContent -File $localPath `
             -Blob $destinationPath `
             -force:$force `
             -Container $storage.container `
             -Context $storage.context
     }
    
     function FindAzure {
         # Is there an active Azure subscription?
         $sub = Get-AzSubscription -ErrorAction SilentlyContinue
         if(-not($sub))
         {
             Connect-AzAccount
         }
     }
    
     function GetStorage {
         param(
             [Parameter(Mandatory = $true)]
             [String]$clusterName
         )
         $hdi = Get-AzHDInsightCluster -ClusterName $clusterName
         # Does the cluster exist?
         if (!$hdi)
         {
             throw "HDInsight cluster '$clusterName' does not exist."
         }
         # Create a return object for context & container
         $return = @{}
         $storageAccounts = @{}
    
         # Get storage information
         $resourceGroup = $hdi.ResourceGroup
         $storageAccountName=$hdi.DefaultStorageAccount.split('.')[0]
         $container=$hdi.DefaultStorageContainer
         $storageAccountKey=(Get-AzStorageAccountKey `
             -Name $storageAccountName `
         -ResourceGroupName $resourceGroup)[0].Value
         # Get the resource group, in case we need that
         $return.resourceGroup = $resourceGroup
         # Get the storage context, as we can't depend
         # on using the default storage context
         $return.context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
         # Get the container, so we know where to
         # find/store blobs
         $return.container = $container
         # Return storage accounts to support finding all accounts for
         # a cluster
         $return.storageAccount = $storageAccountName
         $return.storageAccountKey = $storageAccountKey
    
         return $return
     }
     # Only export the verb-phrase things
     export-modulemember *-*
    

    Dit bestand bevat twee modules:

    • Add-HDInsightFile - wordt gebruikt voor het uploaden van bestanden naar het cluster
    • Start-HBaseExample - wordt gebruikt om de klassen uit te voeren die eerder zijn gemaakt
  2. Sla het hbase-runner.psm1 bestand op in de hbaseapp map.

  3. Registreer de modules bij Azure PowerShell. Open een nieuw Azure PowerShell-venster en bewerk de volgende opdracht door de naam van uw cluster te vervangen CLUSTERNAME . Voer vervolgens de volgende opdrachten in:

    cd C:\HDI\hbaseapp
    $myCluster = "CLUSTERNAME"
    Import-Module .\hbase-runner.psm1
    
  4. Gebruik de volgende opdracht om het hbaseapp-1.0-SNAPSHOT.jar naar uw cluster te uploaden.

    Add-HDInsightFile -localPath target\hbaseapp-1.0-SNAPSHOT.jar -destinationPath example/jars/hbaseapp-1.0-SNAPSHOT.jar -clusterName $myCluster
    

    Voer desgevraagd de naam en het wachtwoord van de clusteraanmelding (beheerder) in. De opdracht uploadt de hbaseapp-1.0-SNAPSHOT.jar naar de example/jars locatie in de primaire opslag voor uw cluster.

  5. Gebruik de hbaseappvolgende opdracht om een tabel te maken met de opdracht:

    Start-HBaseExample -className com.microsoft.examples.CreateTable -clusterName $myCluster
    

    Voer desgevraagd de naam en het wachtwoord van de clusteraanmelding (beheerder) in.

    Met deze opdracht maakt u een tabel met de naam personen in HBase in uw HDInsight-cluster. Met deze opdracht wordt geen uitvoer weergegeven in het consolevenster.

  6. Gebruik de volgende opdracht om te zoeken naar vermeldingen in de tabel:

    Start-HBaseExample -className com.microsoft.examples.SearchByEmail -clusterName $myCluster -emailRegex contoso.com
    

    Voer desgevraagd de naam en het wachtwoord van de clusteraanmelding (beheerder) in.

    Met deze opdracht wordt de SearchByEmail klasse gebruikt om te zoeken naar rijen waarin de contactinformation kolomfamilie en de email kolom de tekenreeks contoso.combevat. U ontvangt de volgende resultaten:

    Franklin Holtz - ID: 2
    Franklin Holtz - franklin@contoso.com - ID: 2
    Rae Schroeder - ID: 4
    Rae Schroeder - rae@contoso.com - ID: 4
    Gabriela Ingram - ID: 6
    Gabriela Ingram - gabriela@contoso.com - ID: 6
    

    Als u fabrikam.com gebruikt voor de -emailRegex waarde, worden de gebruikers geretourneerd die fabrikam.com in het e-mailveld hebben. U kunt ook reguliere expressies gebruiken als zoekterm. ^r retourneert bijvoorbeeld e-mailadressen die beginnen met de letter r.

  7. Gebruik de volgende opdracht om de tabel te verwijderen:

    Start-HBaseExample -className com.microsoft.examples.DeleteTable -clusterName $myCluster
    

Geen resultaten of onverwachte resultaten bij gebruik van Start-HBaseExample

Gebruik de -showErr parameter om de standaardfout (STDERR) weer te geven die wordt geproduceerd tijdens het uitvoeren van de taak.

Volgende stappen

Meer informatie over het gebruik van SQLLine met Apache HBase