per quanto ho capito ci sono 2 modi per connettersi a alveare
- utilizzando il server metastore alveare, che collega quindi in background per un db relazionale come MySQL per la manifestazione dello schema. Funziona sulla porta 9083, generalmente.
- alveare del server JDBC, chiamato HiveServer2, che viene eseguito sulla porta 10001, in genere ...
Ora, nelle edizioni precedenti di alveare, hiveserver2 usato per essere non così stabile e in effetti è multi-threading era anche limitato. Le cose sono probabilmente migliorate in quell'arena, immagino.
Quindi per JDBC api - sì, ti permetterebbe di comunicare usando JDBC e sql.
Per la connettività metastore, sembrano esserci 2 funzioni.
- effettivamente eseguire query SQL - DML
- per eseguire operazioni DDL.
DDL -
per DDL, le API metastore tornare utile, org.apache.hadoop.hive.metastore.HiveMetaStoreClient HiveMetaStoreClient classe può essere utilizzato a tale scopo
DML -
ciò che ho trovato utile a questo proposito è org.apache.hadoop.hive.ql.Driver https://hive.apache.org/javadocs/r0.13.1/api/ql/org/apache/hadoop/hive/ql/Driver.htmlhive.ql.Driver classe Questa classe ha un metodo chiamato run()
che consente di eseguire un'istruzione SQL e ottenere il restituire. per es. puoi fare il seguente
Driver driver = new Driver(hiveConf);
HiveMetaStoreClient client = new HiveMetaStoreClient(hiveConf);
SessionState.start(new CliSessionState(hiveConf));
driver.run("select * from employee);
// DDL example
client.dropTable(db, table);
Anche io voglio capire la differenza. – Bector