2013-11-15 16 views
7

Kann enyone erklären, was ist die Corellation zwischen HCatalog und HBase, bitte?Was ist die Korrelation zwischen HBase und HCatalog?

Ich habe diese Definitionen gefunden:

Apache HCatalog HCatalog ist eine Abstraktion Metadatenschicht für Daten verweisen, ohne die zugrunde liegenden Dateinamen oder Formaten. Es isoliert Benutzer und Skripte davon, wie und wo die Daten physisch gespeichert sind.

Apache HBase HBase (Hadoop DataBase) ist eine verteilte, spaltenorientierte Datenbank. HBase verwendet HDFS für den zugrunde liegenden Speicher. Es unterstützt Batch-Style-Berechnungen mit MapReduce und Punktabfragen (Random Reads).

Wir verwenden CREATE TABLE in Hive, es erstellt Tabelle in HCatalog. Ich verstehe es einfach nicht. Warum nicht in der echten Datenbank, die HBase ist?

HCatalog scheint eine Art Metadatenspeicher für alle Datenspeicher zu sein. Bedeutet es, dass es auch Informationen über Datenbanken und Tabellen in HBase speichert?

Ich werde

Grüße Pawel

+0

Überprüfen Sie diese Antwort [für HBase und HCatalog Korrelation] (https://Stackoverflow.com/a/46844329/1592191) – mrsrinivas

Antwort

8

zur Erklärung dankbar sein, wenn Sie CREATE TABLE in HIVE sie es in HCatalog registriert. Eine Tabelle in Hive kann ein HBase Tisch sein, aber es kann auch eine Abstraktion über HDFS Dateien und Verzeichnisse

Sie können eine schöne Erklärung von HCatalog on HortonWorks' site

+0

Ich glaube nicht, Sie können Hive verwenden, um HBase abzufragen ... –

+2

Dann sind Sie falsch, seit Sie sehen können https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration –

+0

Sie haben Recht. Ich wusste es nicht. –

0

zu finden sein, weil ich die Frage bemerkt habe, ist sehr beliebt, ich Ich habe mich entschieden, es zu beantworten, da ich es ziemlich gut gedünstet habe, seit ich es fragte Also, vor allem seit Hadoop 2.0 HCatalog und Hive werden als ein Produkt behandelt. Hive erstellt standardmäßig Tabellen in HCatalog. Es bedeutet, dass die natürliche Schnittstelle für HCatalog Hive ist. Sie können also alle SQL-92 DMLs (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) und DDLs (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) verwenden, beginnend mit create/alter/drop database, bis create/alter/drop table endend mit select, insert into etc ... Die einzige Ausnahme ist, dass die Einfügung nur als Einfügen in ... als Auswahl funktioniert. Für typischen Einsatz müssen wir verwenden:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] 

Tabellen können Partitionen haben, Indizes (aber aus meinem experioence es nicht gut funktioniert), aber Sie es nicht um eine relationale Datenbank, so dass Sie keine Fremdschlüssel verwenden können, .

Mit HBase ist ganz anders. Dies ist eine der NoSQL-Datenbanken (aber wie in previous post beantwortet, kann Hive HBase-Schnittstelle für SQL-Abfragen sein) Es hat Schlüssel-> Wert organisierte Tabellen. Lässt ein paar Befehle vergleichen (Tabelle erstellen, in Tabelle einfügen, wählen Sie aus der Tabelle, Tabelle löschen

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' 

Wie Sie die Syntax sehen kann, ist vollständig Für SQL-Benutzer ist die Arbeit mit HCatalog natürlich, diejenigen, die mit NoSQL-Datenbanken arbeiten, werden sich mit HBase wohl fühlen.

+2

Sie sind selbst Antwort ist auch falsch (wie ist Ihr Kommentar zu mir) - HCatalog wird standardmäßig von Hive verwendet, aber sie sind nicht dasselbe Produkt und HCatalogis auch verwendbar von anderen Produkten wie Schwein oder Impala. –