Perché ho notato che la questione è molto popolare, I' Ho deciso di risponderle dato che l'ho trovato abbastanza bene da quando l'ho chiesto a Quindi, prima di tutto poiché Hadoop 2.0 HCatalog e Hive sono trattati come un unico prodotto. Hive crea tabelle in HCatalog per impostazione predefinita. Significa che l'interfaccia naturale per HCatalog è Hive. Quindi è possibile utilizzare tutti i DML SQL-92 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) e DDL (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL), a partire da create/alter/drop database
, tramite create/alter/drop table
per finire con select, insert into
ecc. L'unica eccezione è che l'inserimento funziona solo come inserto in ... come da selezione. Per inserto tipico dobbiamo usare:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
Le tabelle possono avere partizioni, indici (ma dal mio experioence non funziona bene), ma non è un database relazionale, quindi non è possibile utilizzare chiavi esterne .
Con HBase è abbastanza diverso. Questo è uno dei database noSQL (ma come risposta in previous post, Hive può essere un'interfaccia HBase per query SQL) Ha tabelle chiave-> valore organizzato. Lets confrontare alcuni comandi (create table, inserire dati nella tabella, selezionare una tabella, drop table
Hive:
create table table_name (
id int,
value1 string,
value2 string
)
partitioned by (date string)
LOAD DATA INPATH 'filepath' ] INTO TABLE table_name [PARTITION (partcol1=val1, partcol2=val2 ...)]
INSERT INTO table_name as select * from othertable
SELECT * FROM table_name
DROP TABLE table_name
HBase:
hbase> create 'test', 'cf'
hbase> put 'test', 'row1', 'cf:a', 'value1'
hbase> get 'test', 'row1'
hbase> disable 'test'
hbase> drop 'test'
Come si può vedere la sintassi è completamente Diverso: per gli utenti SQL, lavorare con HCatalog è naturale, quelli che lavorano con database noSQL si sentiranno a loro agio con HBase.
Controlla questa risposta [per la correlazione HBase e HCatalog] (https://stackoverflow.com/a/46844329/1592191) – mrsrinivas