Потому что я заметил, что вопрос довольно популярен, I» я решил ответить на него, так как я немного успокоился, так как я спросил его Итак, прежде всего, поскольку Hadoop 2.0 HCatalog и Hive рассматриваются как один продукт. По умолчанию Hive создает таблицы в HCatalog. Это означает, что естественным интерфейсом для HCatalog является Hive. Таким образом, вы можете использовать все DML-модули SQL-92 (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML) и DDL (https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL), начиная с create/alter/drop database
, до create/alter/drop table
, заканчивающихся select, insert into
и т. Д. Единственное исключение состоит в том, что вставка работает только как вставка ... в качестве выбора. Для типичной вставки мы должны использовать:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
Таблицы могут иметь перегородки, индексы (но с моей experioence это не очень хорошо работает), но это не является реляционной базой данных, так что вы не можете использовать внешние ключи ,
С HBase совсем другое. Это одна из баз данных noSQL (но, как указано в previous post, Hive может быть интерфейсом HBase для SQL-запросов) В нем есть таблицы, упорядоченные по ключевым словам. Позволяет сравнить несколько команд (создать таблицу, вставить в таблицу, выберите из таблицы, падение таблицы
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'
Как вы можете видеть, синтаксис полностью разные. Для пользователей SQL работа с HCatalog естественна, те, которые работают с базами данных noSQL, будут чувствовать себя комфортно с HBase.
Отметьте этот ответ [для корреляции HBase и HCatalog] (https://stackoverflow.com/a/46844329/1592191) – mrsrinivas