Partilhar via


Construa aplicativos Java para Apache HBase

Saiba como criar um aplicativo Apache HBase em Java. Em seguida, use o aplicativo com o HBase no Azure HDInsight.

As etapas neste documento usam o Apache Maven para criar e construir o projeto. O Maven é uma ferramenta de gerenciamento e compreensão de projetos de software que permite construir software, documentação e relatórios para projetos Java.

Pré-requisitos

Ambiente de teste

O ambiente usado para este artigo foi um computador executando o Windows 10. Os comandos foram executados em um prompt de comando, e os vários arquivos foram editados com o bloco de notas. Modifique de acordo com o seu ambiente.

Em um prompt de comando, digite os seguintes comandos para criar um ambiente de trabalho:

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

Criar um projeto do Maven

  1. Digite o seguinte comando para criar um projeto Maven chamado hbaseapp:

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

    Este comando cria um diretório nomeado hbaseapp no local atual, que contém um projeto Maven básico. O segundo comando altera o diretório de trabalho para hbaseapp. O terceiro comando cria um novo diretório, confque pode ser usado posteriormente. O hbaseapp diretório contém os seguintes itens:

    • pom.xml: O Project Object Model (POM) contém informações e detalhes de configuração usados para construir o projeto.
    • src\main\java\com\microsoft\examples: Contém o código do seu aplicativo.
    • src\test\java\com\microsoft\examples: Contém testes para a sua aplicação.
  2. Remova o código de exemplo gerado. Exclua os arquivos AppTest.javade teste e aplicativo gerados e App.java inserindo os seguintes comandos:

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

Atualizar o modelo de objeto do projeto

Para obter uma referência completa do arquivo pom.xml, consulte https://maven.apache.org/pom.html. Abra pom.xml digitando o seguinte comando:

notepad pom.xml

Adicionar dependências

Em pom.xml, adicione o seguinte texto na <dependencies> seção:

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

Esta seção indica que o projeto precisa de componentes hbase-client e phoenix-core . Em tempo de compilação, essas dependências são baixadas do repositório Maven padrão. Você pode usar a Pesquisa de repositório central do Maven para saber mais sobre essa dependência.

Importante

O número da versão do hbase-client deve corresponder à versão do Apache HBase fornecida com o cluster HDInsight. Use a tabela a seguir para encontrar o número da versão correta.

Versão do cluster HDInsight Versão do Apache HBase a ser usada
3.6 1.1.2
4.0 2.0.0

Para obter mais informações sobre versões e componentes do HDInsight, consulte Quais são os diferentes componentes do Apache Hadoop disponíveis com o HDInsight.

Compilar a configuração

Os plug-ins do Maven permitem que você personalize os estágios de construção do projeto. Esta seção é usada para adicionar plug-ins, recursos e outras opções de configuração de compilação.

Adicione o seguinte código ao pom.xml ficheiro e, em seguida, guarde e feche o ficheiro. Esse texto deve estar dentro das <project>...</project> tags no arquivo, por exemplo, entre </dependencies> e </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>

Esta seção configura um recurso (conf/hbase-site.xml) que contém informações de configuração para o HBase.

Nota

Você também pode definir valores de configuração via código. Veja os comentários no CreateTable exemplo.

Esta seção também configura o Apache Maven Compiler Plugin e o Apache Maven Shade Plugin. O plug-in do compilador é usado para compilar a topologia. O plug-in de sombra é usado para evitar a duplicação de licenças no pacote JAR criado pelo Maven. Este plug-in é usado para evitar um erro de "arquivos de licença duplicados" em tempo de execução no cluster HDInsight. Usar maven-shade-plugin com a ApacheLicenseResourceTransformer implementação evita o erro.

O maven-shade-plugin também produz um uber jar que contém todas as dependências exigidas pelo aplicativo.

Faça o download do hbase-site.xml

Use o comando a seguir para copiar a configuração do HBase do cluster HBase para o conf diretório. Substitua CLUSTERNAME pelo nome do cluster HDInsight e digite o comando:

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

Criar a aplicação

Implementar uma classe CreateTable

Digite o seguinte comando para criar e abrir um novo arquivo CreateTable.java. Selecione Sim no prompt para criar um novo arquivo.

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

Em seguida, copie e cole o seguinte código Java no novo arquivo. Em seguida, feche o arquivo.

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

Esse código é a CreateTable classe, que cria uma tabela chamada people e a preenche com alguns usuários predefinidos.

Implementar uma classe SearchByEmail

Digite o seguinte comando para criar e abrir um novo arquivo SearchByEmail.java. Selecione Sim no prompt para criar um novo arquivo.

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

Em seguida, copie e cole o seguinte código Java no novo arquivo. Em seguida, feche o arquivo.

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

A SearchByEmail classe pode ser usada para consultar linhas por endereço de e-mail. Como ele usa um filtro de expressão regular, você pode fornecer uma cadeia de caracteres ou uma expressão regular ao usar a classe.

Implementar uma classe DeleteTable

Digite o seguinte comando para criar e abrir um novo arquivo DeleteTable.java. Selecione Sim no prompt para criar um novo arquivo.

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

Em seguida, copie e cole o seguinte código Java no novo arquivo. Em seguida, feche o arquivo.

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

A DeleteTable classe limpa as tabelas do HBase criadas neste exemplo desabilitando e soltando a tabela criada pela CreateTable classe.

Compilar e empacotar o aplicativo

  1. hbaseapp No diretório, use o seguinte comando para criar um arquivo JAR que contenha o aplicativo:

    mvn clean package
    

    Este comando cria e empacota o aplicativo em um arquivo .jar.

  2. Quando o comando for concluído, o hbaseapp/target diretório conterá um arquivo chamado hbaseapp-1.0-SNAPSHOT.jar.

    Nota

    O hbaseapp-1.0-SNAPSHOT.jar arquivo é um jarro uber. Ele contém todas as dependências necessárias para executar o aplicativo.

Carregue o JAR e execute trabalhos (SSH)

As etapas a seguir são usadas scp para copiar o JAR para o nó principal principal do cluster Apache HBase no HDInsight. O ssh comando é então usado para se conectar ao cluster e executar o exemplo diretamente no nó principal.

  1. Carregue o jar para o cluster. Substitua CLUSTERNAME pelo nome do cluster HDInsight e digite o seguinte comando:

    scp ./target/hbaseapp-1.0-SNAPSHOT.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net:hbaseapp-1.0-SNAPSHOT.jar
    
  2. Conecte-se ao cluster HBase. Substitua CLUSTERNAME pelo nome do cluster HDInsight e digite o seguinte comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Para criar uma tabela HBase usando o aplicativo Java, use o seguinte comando em sua conexão ssh aberta:

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

    Este comando cria uma tabela do HBase chamada people e a preenche com dados.

  4. Para procurar endereços de e-mail armazenados na tabela, use o seguinte comando:

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

    Você recebe os seguintes resultados:

    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. Para excluir a tabela, use o seguinte comando:

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

Carregue o JAR e execute trabalhos (PowerShell)

As etapas a seguir usam o módulo AZ do Azure PowerShell para carregar o JAR no armazenamento padrão do cluster Apache HBase. Os cmdlets do HDInsight são usados para executar os exemplos remotamente.

  1. Depois de instalar e configurar o módulo AZ, crie um arquivo chamado hbase-runner.psm1. Utilize o seguinte texto como o conteúdo desse ficheiro:

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

    Este ficheiro contém dois módulos:

    • Add-HDInsightFile - usado para carregar arquivos para o cluster
    • Start-HBaseExample - usado para executar as classes criadas anteriormente
  2. Salve o hbase-runner.psm1 hbaseapp arquivo no diretório.

  3. Registre os módulos com o Azure PowerShell. Abra uma nova janela do Azure PowerShell e edite o comando a seguir substituindo CLUSTERNAME pelo nome do cluster. Em seguida, digite os seguintes comandos:

    cd C:\HDI\hbaseapp
    $myCluster = "CLUSTERNAME"
    Import-Module .\hbase-runner.psm1
    
  4. Use o seguinte comando para carregar o para o hbaseapp-1.0-SNAPSHOT.jar cluster.

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

    Quando solicitado, digite o nome e a senha de login (admin) do cluster. O comando carrega o hbaseapp-1.0-SNAPSHOT.jar para o example/jars local no armazenamento principal do cluster.

  5. Para criar uma tabela usando o hbaseapp, use o seguinte comando:

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

    Quando solicitado, digite o nome e a senha de login (admin) do cluster.

    Este comando cria uma tabela chamada pessoas no HBase no cluster HDInsight. Este comando não mostra nenhuma saída na janela do console.

  6. Para procurar entradas na tabela, utilize o seguinte comando:

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

    Quando solicitado, digite o nome e a senha de login (admin) do cluster.

    Este comando usa a SearchByEmail classe para procurar quaisquer linhas onde a família de contactinformation colunas e a email coluna contenham a cadeia de caracteres contoso.com. Deverá receber os seguintes resultados:

    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
    

    Usar fabrikam.com para o -emailRegex valor retorna os usuários que fabrikam.com no campo de email. Você também pode usar expressões regulares como o termo de pesquisa. Por exemplo, ^r retorna endereços de e-mail que começam com a letra 'r'.

  7. Para excluir a tabela, use o seguinte comando:

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

Nenhum resultado ou resultados inesperados ao usar Start-HBaseExample

Use o -showErr parâmetro para exibir o erro padrão (STDERR) produzido durante a execução do trabalho.

Próximos passos

Saiba como usar o SQLLine com o Apache HBase