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
Een Apache HBase-cluster in HDInsight. Zie Aan de slag met Apache HBase.
Apache Maven correct geïnstalleerd volgens Apache. Maven is een systeem voor het bouwen van Java-projecten.
Een SSH-client. Zie voor meer informatie Verbinding maken met HDInsight (Apache Hadoop) via SSH.
Als u PowerShell gebruikt, hebt u de AZ-module nodig.
Een teksteditor. In dit artikel wordt Microsoft Kladblok gebruikt.
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
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 inhbaseapp
. Met de derde opdracht maakt u een nieuwe map,conf
die later kan worden gebruikt. Dehbaseapp
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.
Verwijder de gegenereerde voorbeeldcode. Verwijder de gegenereerde test- en toepassingsbestanden
AppTest.java
enApp.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 bestand pom.xml https://maven.apache.org/pom.html. Open pom.xml
door de volgende opdracht in te voeren:
notepad pom.xml
Afhankelijkheden toevoegen
Voeg pom.xml
in 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.java
te 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.java
te 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.java
te 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
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 in een .jar-bestand gebouwd en verpakt.
Wanneer de opdracht is voltooid, bevat de map een bestand met de
hbaseapp/target
naamhbaseapp-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.
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
Maak verbinding met 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
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.
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
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.
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
Sla het
hbase-runner.psm1
bestand op in dehbaseapp
map.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
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 deexample/jars
locatie in de primaire opslag voor uw cluster.Gebruik de
hbaseapp
volgende 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.
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 decontactinformation
kolomfamilie en deemail
kolom de tekenreekscontoso.com
bevat. 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.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