Java-alkalmazások létrehozása az Apache HBase-hez

Megtudhatja, hogyan hozhat létre Apache HBase-alkalmazást Java nyelven. Ezután használja az alkalmazást az Azure HDInsight HBase-jével.

A dokumentum lépései az Apache Maven használatával hozzák létre és készítik el a projektet. A Maven egy szoftverprojekt-kezelési és szövegértési eszköz, amellyel Java-projektekhez készíthet szoftvereket, dokumentációkat és jelentéseket.

Előfeltételek

Tesztkörnyezet

A cikkhez használt környezet egy Windows 10 rendszerű számítógép volt. A parancsok parancssorban lettek végrehajtva, és a különböző fájlok Jegyzettömb lettek szerkesztve. Ennek megfelelően módosítsa a környezetet.

A parancssorból írja be a következő parancsokat egy munkakörnyezet létrehozásához:

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

Maven-projekt létrehozása

  1. Adja meg a következő parancsot egy hbaseapp nevű Maven-projekt létrehozásához:

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

    Ez a parancs létrehoz egy könyvtárat hbaseapp az aktuális helyen, amely egy alapszintű Maven-projektet tartalmaz. A második parancs a munkakönyvtárat a következőre hbaseappmódosítja: . A harmadik parancs létrehoz egy új könyvtárat, confamely később használható. A hbaseapp könyvtár a következő elemeket tartalmazza:

    • pom.xml: A projektobjektum-modell (POM) a projekt létrehozásához használt információkat és konfigurációs adatokat tartalmazza.
    • src\main\java\com\microsoft\examples: Az alkalmazás kódját tartalmazza.
    • src\test\java\com\microsoft\examples: Az alkalmazás tesztjeit tartalmazza.
  2. Távolítsa el a létrehozott példakódot. Törölje a létrehozott teszt- és alkalmazásfájlokat AppTest.java, és App.java adja meg a következő parancsokat:

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

A Projektobjektum-modell frissítése

A pom.xml fájl teljes hivatkozását lásd https://maven.apache.org/pom.html: . Nyissa meg pom.xml a következő parancs beírásával:

notepad pom.xml

Függőségek hozzáadása

Adja pom.xmlhozzá a következő szöveget a <dependencies> szakaszhoz:

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

Ez a szakasz azt jelzi, hogy a projektnek hbase-client és phoenix-core összetevőkre van szüksége. Fordításkor ezek a függőségek az alapértelmezett Maven-adattárból töltődnek le. A Maven Central-adattár keresésével többet is megtudhat erről a függőségről.

Fontos

A hbase-client verziószámának meg kell egyeznie az Apache HBase HDInsight-fürthöz biztosított verziójával. A megfelelő verziószám megkereséséhez használja az alábbi táblázatot.

HDInsight-fürt verziója Használandó Apache HBase-verzió
3,6 1.1.2
4,0 2.0.0

A HDInsight-verziókkal és -összetevőkkel kapcsolatos további információkért tekintse meg a HDInsighttal elérhető különböző Apache Hadoop-összetevőket.

Buildelési konfiguráció

A Maven beépülő modulok lehetővé teszik a projekt buildelési fázisainak testreszabását. Ez a szakasz beépülő modulok, erőforrások és más buildkonfigurációs beállítások hozzáadására szolgál.

Adja hozzá a következő kódot a pom.xml fájlhoz, majd mentse és zárja be a fájlt. Ennek a szövegnek a <project>...</project> fájl címkéiben kell lennie, például közötte és </project>között</dependencies>.

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

Ez a szakasz konfigurál egy erőforrást (conf/hbase-site.xml), amely a HBase konfigurációs adatait tartalmazza.

Megjegyzés:

A konfigurációs értékeket kóddal is beállíthatja. Lásd a példában szereplő CreateTable megjegyzéseket.

Ez a szakasz az Apache Maven Fordító beépülő modult és az Apache Maven Shade beépülő modult is konfigurálja. A fordító beépülő modul a topológia fordítására szolgál. Az árnyékoló beépülő modul a Maven által létrehozott JAR-csomag licenc-duplikációjának megelőzésére szolgál. Ez a beépülő modul a HDInsight-fürt futásidejű "duplikált licencfájljainak" megelőzésére szolgál. A maven-shade-plugin implementációval való ApacheLicenseResourceTransformer használata megakadályozza a hibát.

A maven-shade-plugin egy uber jar-t is létrehoz, amely tartalmazza az alkalmazás által igényelt összes függőséget.

A hbase-site.xml letöltése

Az alábbi paranccsal másolja a HBase-konfigurációt a HBase-fürtből a conf könyvtárba. Cserélje le CLUSTERNAME a HDInsight-fürt nevét, majd írja be a következő parancsot:

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

Az alkalmazás létrehozása

CreateTable-osztály implementálása

Új fájl CreateTable.javalétrehozásához és megnyitásához írja be a következő parancsot. Új fájl létrehozásához válassza az Igen lehetőséget a parancssorban.

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

Ezután másolja és illessze be a következő Java-kódot az új fájlba. Ezután zárja be a fájlt.

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

Ez a kód az CreateTable osztály, amely létrehoz egy táblát, people és feltölti néhány előre definiált felhasználóval.

SearchByEmail-osztály implementálása

Új fájl SearchByEmail.javalétrehozásához és megnyitásához írja be a következő parancsot. Új fájl létrehozásához válassza az Igen lehetőséget a parancssorban.

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

Ezután másolja és illessze be a következő Java-kódot az új fájlba. Ezután zárja be a fájlt.

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

Az SearchByEmail osztály segítségével e-mail-cím alapján kérdezhetők le a sorok. Mivel reguláris kifejezésszűrőt használ, az osztály használatakor megadhat egy sztringet vagy egy reguláris kifejezést.

DeleteTable osztály implementálása

Új fájl DeleteTable.javalétrehozásához és megnyitásához írja be a következő parancsot. Új fájl létrehozásához válassza az Igen lehetőséget a parancssorban.

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

Ezután másolja és illessze be a következő Java-kódot az új fájlba. Ezután zárja be a fájlt.

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

Az DeleteTable osztály törli a példában létrehozott HBase-táblákat az osztály által CreateTable létrehozott tábla letiltásával és elvetésével.

Az alkalmazás létrehozása és csomagolása

  1. hbaseapp A címtárból az alábbi paranccsal hozzon létre egy JAR-fájlt, amely tartalmazza az alkalmazást:

    mvn clean package
    

    Ez a parancs egy .jar fájlba építi és csomagolja az alkalmazást.

  2. Amikor a parancs befejeződik, a hbaseapp/target könyvtár egy nevű hbaseapp-1.0-SNAPSHOT.jarfájlt tartalmaz.

    Megjegyzés:

    A hbaseapp-1.0-SNAPSHOT.jar fájl egy uber jar. Az alkalmazás futtatásához szükséges összes függőséget tartalmazza.

Töltse fel a JAR-t, és futtassa a feladatokat (SSH)

Az alábbi lépéseket követve scp másolja a JAR-t az Apache HBase elsődleges főcsomópontjára a HDInsight-fürtön. A ssh parancs ezután a fürthöz való csatlakozáshoz és a példa futtatásához használható közvetlenül a főcsomóponton.

  1. Töltse fel a jart a fürtbe. Cserélje le CLUSTERNAME a HDInsight-fürt nevét, majd írja be a következő parancsot:

    scp ./target/hbaseapp-1.0-SNAPSHOT.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net:hbaseapp-1.0-SNAPSHOT.jar
    
  2. Csatlakozás a HBase-fürthöz. Cserélje le CLUSTERNAME a HDInsight-fürt nevét, majd írja be a következő parancsot:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Ha egy HBase-táblát a Java-alkalmazással szeretne létrehozni, használja a következő parancsot a nyílt ssh-kapcsolaton:

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

    Ez a parancs létrehoz egy személyek nevű HBase-táblát, és feltölti az adatokat.

  4. A táblázatban tárolt e-mail-címek kereséséhez használja a következő parancsot:

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

    A következő eredményeket kapja:

    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. A tábla törléséhez használja a következő parancsot:

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

Töltse fel a JAR-t, és futtassa a feladatokat (PowerShell)

Az alábbi lépések az Azure PowerShell AZ modul használatával töltik fel a JAR-t az Apache HBase-fürt alapértelmezett tárolójához. Ezután a HDInsight parancsmagokkal távolról futtathatja a példákat.

  1. Az AZ modul telepítése és konfigurálása után hozzon létre egy fájlt hbase-runner.psm1. A fájl tartalma legyen a következő szöveg:

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

    Ez a fájl két modult tartalmaz:

    • Add-HDInsightFile – fájlok fürtbe való feltöltésére szolgál
    • Start-HBaseExample – a korábban létrehozott osztályok futtatására szolgál
  2. Mentse a hbase-runner.psm1 fájlt a hbaseapp könyvtárban.

  3. A modulok regisztrálása az Azure PowerShell-lel. Nyisson meg egy új Azure PowerShell-ablakot, és szerkessze a következő parancsot a fürt nevére cserélve CLUSTERNAME . Ezután adja meg a következő parancsokat:

    cd C:\HDI\hbaseapp
    $myCluster = "CLUSTERNAME"
    Import-Module .\hbase-runner.psm1
    
  4. A fürtbe az alábbi paranccsal töltheti fel a hbaseapp-1.0-SNAPSHOT.jar fájlt.

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

    Amikor a rendszer kéri, adja meg a fürt bejelentkezési (rendszergazdai) nevét és jelszavát. A parancs feltölti a hbaseapp-1.0-SNAPSHOT.jarexample/jars fürtöt az elsődleges tárolóba.

  5. Táblázat létrehozásához használja a hbaseappkövetkező parancsot:

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

    Amikor a rendszer kéri, adja meg a fürt bejelentkezési (rendszergazdai) nevét és jelszavát.

    Ez a parancs létrehoz egy személyek nevű táblát a HBase-ben a HDInsight-fürtön. Ez a parancs nem jelenít meg kimenetet a konzolablakban.

  6. A tábla bejegyzéseinek kereséséhez használja a következő parancsot:

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

    Amikor a rendszer kéri, adja meg a fürt bejelentkezési (rendszergazdai) nevét és jelszavát.

    Ez a parancs az SearchByEmail osztály használatával megkeresi azokat a sorokat, ahol az contactinformation oszlopcsalád és az email oszlop tartalmazza a sztringet contoso.com. A következő eredményeket kell kapnia:

    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
    

    A fabrikam.com az értékhez -emailRegex való használata azokat a felhasználókat adja vissza, akiknek fabrikam.com az e-mail mezőben. A reguláris kifejezéseket is használhatja keresési kifejezésként. A(z) ^r például az "r" betűvel kezdődő e-mail-címeket adja vissza.

  7. A tábla törléséhez használja a következő parancsot:

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

Nincs eredmény vagy váratlan eredmény a Start-HBaseExample használatakor

A paraméter használatával -showErr megtekintheti a feladat futtatása során létrehozott standard hibát (STDERR).

Következő lépések

Ismerje meg, hogyan használhatja az SQLLine-t az Apache HBase-lel