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
Apache HBase-fürt a HDInsighton. Tekintse meg az Apache HBase használatának első lépéseit.
A Java Developer Kit (JDK) 8-es verziója.
Az Apache Maven megfelelően van telepítve az Apache szerint. A Maven egy Java-projektek projektépítési rendszere.
Egy SSH-ügyfél. For more information, see Connect to HDInsight (Apache Hadoop) using SSH.
Ha a PowerShellt használja, szüksége lesz az AZ-modulra.
Egy szövegszerkesztő. Ez a cikk a Microsoft Jegyzettömb használja.
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
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őrehbaseapp
módosítja: . A harmadik parancs létrehoz egy új könyvtárat,conf
amely később használható. Ahbaseapp
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.
Távolítsa el a létrehozott példakódot. Törölje a létrehozott teszt- és alkalmazásfájlokat
AppTest.java
, ésApp.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.xml
hozzá 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.java
lé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.java
lé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.java
lé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
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.
Amikor a parancs befejeződik, a
hbaseapp/target
könyvtár egy nevűhbaseapp-1.0-SNAPSHOT.jar
fá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.
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
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
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.
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
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.
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
Mentse a
hbase-runner.psm1
fájlt ahbaseapp
könyvtárban.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
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.jar
example/jars
fürtöt az elsődleges tárolóba.Táblázat létrehozásához használja a
hbaseapp
kö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.
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 azcontactinformation
oszlopcsalád és azemail
oszlop tartalmazza a sztringetcontoso.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.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