Guida introduttiva: Eseguire query su Apache HBase in Azure HDInsight con Apache Phoenix

In questo argomento di avvio rapido si apprenderà come usare Apache Phoenix per eseguire query HBase in Azure HDInsight. Apache Phoenix è un motore di query SQL per Apache HBase. Vi si accede come un'unità JDBC e permette di eseguire query e di gestire le tabelle HBase tramite SQL. SQLLine è un'utilità della riga di comando per eseguire SQL.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Identificare un nodo ZooKeeper

Quando ci si connette a un cluster HBase, è necessario connettersi a uno dei nodi Apache ZooKeeper. Ogni cluster HDInsight ha tre nodi ZooKeeper. È possibile usare curl per identificare rapidamente un nodo ZooKeeper. Modificare il comando curl seguente sostituendo PASSWORD e CLUSTERNAME con i valori appropriati e quindi digitare il comando al prompt dei comandi:

curl -u admin:PASSWORD -sS -G https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER

Una parte dell'output sarà simile a quanto segue:

    {
      "href" : "http://hn*.432dc3rlshou3ocf251eycoapa.bx.internal.cloudapp.net:8080/api/v1/clusters/myCluster/hosts/<zookeepername1>.432dc3rlshou3ocf251eycoapa.bx.internal.cloudapp.net/host_components/ZOOKEEPER_SERVER",
      "HostRoles" : {
        "cluster_name" : "myCluster",
        "component_name" : "ZOOKEEPER_SERVER",
        "host_name" : "<zookeepername1>.432dc3rlshou3ocf251eycoapa.bx.internal.cloudapp.net"
      }

Prendere nota del valore di host_name per usarlo in seguito.

Creare una tabella e manipolare i dati

È possibile usare SSH per connettersi ai cluster HBase e quindi usare Apache Phoenix per creare tabelle HBase, inserire dati ed eseguire query sui dati.

  1. Usare il comando ssh per connettersi al cluster HBase. Modificare il comando seguente sostituendo CLUSTERNAME con il nome del cluster in uso e quindi immettere il comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Passare alla directory del client Phoenix. Immettere il comando seguente:

    cd /usr/hdp/current/phoenix-client/bin
    
  3. Avviare SQLLine. Modificare il comando seguente sostituendo ZOOKEEPER con il nodo ZooKeeper identificato in precedenza e quindi immettere il comando:

    ./sqlline.py ZOOKEEPER:2181:/hbase-unsecure
    
  4. Creare una tabella HBase. Immettere il comando seguente:

    CREATE TABLE Company (company_id INTEGER PRIMARY KEY, name VARCHAR(225));
    
  5. Usare il comando SQLLine !tables per elencare tutte le tabelle in HBase. Immettere il comando seguente:

    !tables
    
  6. Inserire i valori nella tabella. Immettere il comando seguente:

    UPSERT INTO Company VALUES(1, 'Microsoft');
    UPSERT INTO Company VALUES(2, 'Apache');
    
  7. Eseguire una query sulla tabella. Immettere il comando seguente:

    SELECT * FROM Company;
    
  8. Eliminare un record. Immettere il comando seguente:

    DELETE FROM Company WHERE COMPANY_ID=1;
    
  9. Eliminare la tabella. Immettere il comando seguente:

    DROP TABLE Company;
    
  10. Usare il comando SQLLine !quit per uscire da SQLLine. Immettere il comando seguente:

    !quit
    

Pulire le risorse

Al termine dell'argomento di avvio rapido, può essere opportuno eliminare il cluster. Con HDInsight, i dati vengono archiviati in Archiviazione di Azure ed è possibile eliminare tranquillamente un cluster quando non viene usato. Vengono addebitati i costi anche per i cluster HDInsight che non sono in uso. Poiché i costi per il cluster sono decisamente superiori a quelli per l'archiviazione, economicamente ha senso eliminare i cluster quando non vengono usati.

Per eliminare un cluster, vedere Eliminare un cluster HDInsight tramite browser, PowerShell o l'interfaccia della riga di comando di Azure.

Passaggi successivi

In questo argomento di avvio rapido si è appreso come usare Apache Phoenix per eseguire query HBase in Azure HDInsight. Per altre informazioni su Apache Phoenix, leggere l'articolo seguente che contiene una descrizione più approfondita.