Tworzenie aplikacji Java dla bazy danych Apache HBase

Dowiedz się, jak utworzyć aplikację Apache HBase w języku Java. Następnie użyj aplikacji z bazą danych HBase w usłudze Azure HDInsight.

Kroki opisane w tym dokumencie używają narzędzia Apache Maven do tworzenia i kompilowania projektu. Maven to narzędzie do zarządzania projektami oprogramowania i zrozumienia, które umożliwia tworzenie oprogramowania, dokumentacji i raportów dla projektów Java.

Wymagania wstępne

Środowisko testowe

Środowisko używane w tym artykule było komputerem z systemem Windows 10. Polecenia zostały wykonane w wierszu polecenia, a różne pliki zostały edytowane przy użyciu Notatnik. Zmodyfikuj odpowiednio środowisko.

W wierszu polecenia wprowadź następujące polecenia, aby utworzyć środowisko robocze:

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

Tworzenie projektu Maven

  1. Wprowadź następujące polecenie, aby utworzyć projekt Maven o nazwie hbaseapp:

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

    To polecenie tworzy katalog o nazwie hbaseapp w bieżącej lokalizacji, który zawiera podstawowy projekt Maven. Drugie polecenie zmienia katalog roboczy na hbaseapp. Trzecie polecenie tworzy nowy katalog , confktórego można użyć później. Katalog hbaseapp zawiera następujące elementy:

    • pom.xml: Model obiektów projektu (POM) zawiera informacje i szczegóły konfiguracji używane do kompilowania projektu.
    • src\main\java\com\microsoft\examples: zawiera kod aplikacji.
    • src\test\java\com\microsoft\examples: zawiera testy dla aplikacji.
  2. Usuń wygenerowany przykładowy kod. Usuń wygenerowane pliki AppTest.javatestów i aplikacji, a App.java następnie wprowadź następujące polecenia:

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

Aktualizowanie modelu obiektów projektu

Aby uzyskać pełną dokumentację pliku pom.xml, zobacz https://maven.apache.org/pom.html. Otwórz plik pom.xml , wprowadzając następujące polecenie:

notepad pom.xml

Dodawanie zależności

W pom.xmlpliku dodaj następujący tekst w <dependencies> sekcji :

<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>

Ta sekcja wskazuje, że projekt wymaga składników hbase-client i phoenix-core . W czasie kompilacji te zależności są pobierane z domyślnego repozytorium Maven. Aby dowiedzieć się więcej na temat tej zależności, możesz użyć wyszukiwania centralnego repozytorium Maven.

Ważne

Numer wersji klienta hbase-client musi być zgodny z wersją bazy danych Apache HBase dostarczonej z klastrem usługi HDInsight. Skorzystaj z poniższej tabeli, aby znaleźć prawidłowy numer wersji.

Wersja klastra usługi HDInsight Wersja bazy danych Apache HBase do użycia
3,6 1.1.2
4.0 2.0.0

Aby uzyskać więcej informacji na temat wersji i składników usługi HDInsight, zobacz Co to są różne składniki platformy Apache Hadoop dostępne w usłudze HDInsight.

Konfiguracja kompilacji

Wtyczki Maven umożliwiają dostosowanie etapów kompilacji projektu. Ta sekcja służy do dodawania wtyczek, zasobów i innych opcji konfiguracji kompilacji.

Dodaj następujący kod do pom.xml pliku, a następnie zapisz i zamknij plik. Ten tekst musi znajdować się wewnątrz <project>...</project> tagów w pliku, na przykład między </dependencies> i </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>

Ta sekcja umożliwia skonfigurowanie zasobu (conf/hbase-site.xml), który zawiera informacje o konfiguracji bazy danych HBase.

Uwaga

Można również ustawić wartości konfiguracji za pomocą kodu. Zobacz komentarze w przykładzie CreateTable .

Ta sekcja umożliwia również skonfigurowanie wtyczki kompilatora Apache Maven i wtyczki Apache Maven Shade. Wtyczka kompilatora służy do kompilowania topologii. Wtyczka cieniowania służy do zapobiegania duplikowaniu licencji w pakiecie JAR utworzonym przez narzędzie Maven. Ta wtyczka służy do zapobiegania błędowi "zduplikowanych plików licencji" w czasie wykonywania w klastrze usługi HDInsight. Użycie wtyczki maven-shade-plugin z implementacją ApacheLicenseResourceTransformer uniemożliwia błąd.

Wtyczka maven-shade-plugin tworzy również plik jar uber zawierający wszystkie zależności wymagane przez aplikację.

Pobierz plik hbase-site.xml

Użyj następującego polecenia, aby skopiować konfigurację bazy danych HBase z klastra conf HBase do katalogu. Zastąp CLUSTERNAME ciąg nazwą klastra usługi HDInsight, a następnie wprowadź polecenie:

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

Tworzenie aplikacji

Implementowanie klasy CreateTable

Wprowadź następujące polecenie, aby utworzyć i otworzyć nowy plik CreateTable.java. Wybierz pozycję Tak po wyświetleniu monitu, aby utworzyć nowy plik.

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

Następnie skopiuj i wklej następujący kod Java do nowego pliku. Następnie zamknij plik.

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();
    }
}

Ten kod jest klasą CreateTable , która tworzy tabelę o nazwie people i wypełnia ją niektórymi wstępnie zdefiniowanymi użytkownikami.

Implementowanie klasy SearchByEmail

Wprowadź następujące polecenie, aby utworzyć i otworzyć nowy plik SearchByEmail.java. Wybierz pozycję Tak po wyświetleniu monitu, aby utworzyć nowy plik.

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

Następnie skopiuj i wklej następujący kod Java do nowego pliku. Następnie zamknij plik.

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();
    }
}

Klasa SearchByEmail może służyć do wykonywania zapytań dotyczących wierszy według adresu e-mail. Ponieważ używa filtru wyrażenia regularnego, można podać ciąg lub wyrażenie regularne podczas korzystania z klasy.

Implementowanie klasy DeleteTable

Wprowadź następujące polecenie, aby utworzyć i otworzyć nowy plik DeleteTable.java. Wybierz pozycję Tak po wyświetleniu monitu, aby utworzyć nowy plik.

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

Następnie skopiuj i wklej następujący kod Java do nowego pliku. Następnie zamknij plik.

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

Klasa DeleteTable czyści tabele HBase utworzone w tym przykładzie przez wyłączenie i usunięcie tabeli utworzonej przez klasę CreateTable .

Kompilowanie i pakowanie aplikacji

  1. hbaseapp W katalogu użyj następującego polecenia, aby skompilować plik JAR zawierający aplikację:

    mvn clean package
    

    To polecenie kompiluje i pakuje aplikację do pliku jar.

  2. Po zakończeniu hbaseapp/target polecenia katalog zawiera plik o nazwie hbaseapp-1.0-SNAPSHOT.jar.

    Uwaga

    Plik hbaseapp-1.0-SNAPSHOT.jar jest plikiem jar uber. Zawiera wszystkie zależności wymagane do uruchomienia aplikacji.

Przekazywanie pliku JAR i uruchamianie zadań (SSH)

Poniższe kroki umożliwiają scp skopiowanie pliku JAR do podstawowego węzła głównego bazy danych Apache HBase w klastrze usługi HDInsight. Polecenie ssh jest następnie używane do nawiązywania połączenia z klastrem i uruchamiania przykładu bezpośrednio w węźle głównym.

  1. Przekaż plik jar do klastra. Zastąp CLUSTERNAME ciąg nazwą klastra usługi HDInsight, a następnie wprowadź następujące polecenie:

    scp ./target/hbaseapp-1.0-SNAPSHOT.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net:hbaseapp-1.0-SNAPSHOT.jar
    
  2. Połączenie do klastra HBase. Zastąp CLUSTERNAME ciąg nazwą klastra usługi HDInsight, a następnie wprowadź następujące polecenie:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Aby utworzyć tabelę HBase przy użyciu aplikacji Java, użyj następującego polecenia w otwartym połączeniu SSH:

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

    To polecenie tworzy tabelę HBase o nazwie people i wypełnia ją danymi.

  4. Aby wyszukać adresy e-mail przechowywane w tabeli, użyj następującego polecenia:

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

    Otrzymasz następujące wyniki:

    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. Aby usunąć tabelę, użyj następującego polecenia:

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

Przekazywanie pliku JAR i uruchamianie zadań (PowerShell)

W poniższych krokach użyj modułu AZ programu Azure PowerShell, aby przekazać plik JAR do domyślnego magazynu dla klastra Apache HBase. Polecenia cmdlet usługi HDInsight są następnie używane do zdalnego uruchamiania przykładów.

  1. Po zainstalowaniu i skonfigurowaniu modułu AZ utwórz plik o nazwie hbase-runner.psm1. Użyj następującego tekstu jako zawartości tego pliku:

     <#
     .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 *-*
    

    Ten plik zawiera dwa moduły:

    • Add-HDInsightFile — służy do przekazywania plików do klastra
    • Start-HBaseExample — służy do uruchamiania utworzonych wcześniej klas
  2. hbase-runner.psm1 Zapisz plik w hbaseapp katalogu.

  3. Zarejestruj moduły w programie Azure PowerShell. Otwórz nowe okno programu Azure PowerShell i zmodyfikuj następujące polecenie, zastępując CLUSTERNAME ciąg nazwą klastra. Następnie wprowadź następujące polecenia:

    cd C:\HDI\hbaseapp
    $myCluster = "CLUSTERNAME"
    Import-Module .\hbase-runner.psm1
    
  4. Użyj następującego polecenia, aby przekazać element do klastra hbaseapp-1.0-SNAPSHOT.jar .

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

    Po wyświetleniu monitu wprowadź nazwę logowania klastra (administratora) i hasło. Polecenie przekazuje element hbaseapp-1.0-SNAPSHOT.jar do example/jars lokalizacji w magazynie podstawowym klastra.

  5. Aby utworzyć tabelę przy użyciu hbaseapppolecenia , użyj następującego polecenia:

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

    Po wyświetleniu monitu wprowadź nazwę logowania klastra (administratora) i hasło.

    To polecenie tworzy tabelę o nazwie people in HBase w klastrze usługi HDInsight. To polecenie nie wyświetla żadnych danych wyjściowych w oknie konsoli.

  6. Aby wyszukać wpisy w tabeli, użyj następującego polecenia:

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

    Po wyświetleniu monitu wprowadź nazwę logowania klastra (administratora) i hasło.

    To polecenie używa SearchByEmail klasy do wyszukiwania dowolnych wierszy, w których contactinformation rodzina kolumn i email kolumna zawiera ciąg contoso.com. Powinny zostać wyświetlone następujące wyniki:

    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
    

    Użycie fabrikam.com wartości -emailRegex zwraca użytkowników, którzy mają fabrikam.com w polu poczty e-mail. Możesz również użyć wyrażeń regularnych jako terminu wyszukiwania. Na przykład program ^r zwraca adresy e-mail rozpoczynające się literą "r".

  7. Aby usunąć tabelę, użyj następującego polecenia:

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

Brak wyników lub nieoczekiwanych wyników podczas korzystania z polecenia Start-HBaseExample

Użyj parametru -showErr , aby wyświetlić błąd standardowy (STDERR), który jest generowany podczas uruchamiania zadania.

Następne kroki

Dowiedz się, jak używać usługi SQLLine z bazą danych Apache HBase