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
Un cluster Apache HBase. Per creare un cluster HDInsight, vedere Creare un cluster. Assicurarsi di scegliere il tipo di cluster HBase.
Un client SSH. Per altre informazioni, vedere Connettersi a HDInsight (Apache Hadoop) con SSH.
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.
Usare il comando
ssh
per connettersi al cluster HBase. Modificare il comando seguente sostituendoCLUSTERNAME
con il nome del cluster in uso e quindi immettere il comando:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
Passare alla directory del client Phoenix. Immettere il comando seguente:
cd /usr/hdp/current/phoenix-client/bin
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
Creare una tabella HBase. Immettere il comando seguente:
CREATE TABLE Company (company_id INTEGER PRIMARY KEY, name VARCHAR(225));
Usare il comando SQLLine
!tables
per elencare tutte le tabelle in HBase. Immettere il comando seguente:!tables
Inserire i valori nella tabella. Immettere il comando seguente:
UPSERT INTO Company VALUES(1, 'Microsoft'); UPSERT INTO Company VALUES(2, 'Apache');
Eseguire una query sulla tabella. Immettere il comando seguente:
SELECT * FROM Company;
Eliminare un record. Immettere il comando seguente:
DELETE FROM Company WHERE COMPANY_ID=1;
Eliminare la tabella. Immettere il comando seguente:
DROP TABLE Company;
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.