Как данные улья и metastore взаимодействуют и интегрируются друг с другом? - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в улье / hadoop.Я читал / смотрел документацию, видео о том, как hive, hdfs, hadoop работает внутри.Но я все еще не мог понять несколько вещей сразу.Данные wkt Hive хранятся в виде файлов в формате hdf, а структура таблиц (схема) хранится в metastore.

  1. Поскольку hive является схемой только для чтения во время выполнения запроса, данные и схема объединяются друг с другом и выдают результат.Пожалуйста, подтвердите, верно ли мое понимание этого утверждения?

  2. Как утверждение 1 говорит нам об интеграции, как происходит интеграция?Как и файлы (фактические данные), хранящиеся в hdfs, не имеет права на схему.Как mapreduce / hadoop / hive знает, что «эти конкретные данные, хранящиеся в файле», принадлежат «этому конкретному столбцу таблицы».Не будет ли несоответствие данных?

Я бы подумал, что файлы данных улья будут выглядеть так:

students.txt
-------------
1 abc m@gmail.com
-------------------
2 xyz@ymail.com
---------------

вышеупомянутый файл не хранит схему,Следовательно, для студента с s_id 2 имя не сохраняется.Как эти вещи запечатлены?когда запрос выполняется?Я не думаю, что xyz@gmail.com будет интегрирован в поле student_name.Но все же хотелось бы узнать, как происходит интеграция?

1 Ответ

2 голосов
/ 03 апреля 2019

Ваше понимание относительно "данных Hive хранятся в виде файлов в формате hdf, а структура таблиц (схема) хранится в метастазе".верно.Но в дополнение к схеме Metastore также содержит данные каталога HDFS, в котором хранятся данные таблицы.Эта информация о пути HDFS используется запросами во время выполнения.

Ваше понимание и мои проверки / ответы:

  1. Поскольку hive является схемой только для чтения во время выполнения запроса, данные и схема интегрируются друг с другом и выдают результат,Пожалуйста, подтвердите, правильно ли мое понимание этого утверждения?

Ответ: ПРАВИЛЬНО

Поскольку утверждение 1 говорит нам об интеграции, как происходит интеграция?Как и файлы (фактические данные), хранящиеся в hdfs, не имеет права на схему.Как mapreduce / hadoop / hive знает, что «эти конкретные данные, хранящиеся в файле», принадлежат «этому конкретному столбцу таблицы».Не будет ли несовпадение данных?

Ответ:

Файлы, такие как текстовые файлы, которые хранятся в HDFS и являются частью выигранной таблицы.в нем нет структур или имен столбцов, а только данные.Но когда таблица будет создана, нам нужно будет четко указать столбцы и то, как они хранятся в текстовых файлах.Допустим, 2 столбца и данные с разделителями-запятыми будут иметь запрос, подобный приведенному ниже,

create table default.column_test 
(name string,
email string)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','

Таким образом, файл данных, т. Е. Текстовый файл, присутствующий в пути HDFS, должен содержать данные в следующем формате.

alpha,alpha@email.com
beta,beta@email.com

Когда данные запрашиваются из этой таблицы с использованием запроса SELECT, сначала запрос будет скомпилирован, и произойдет выполнение с данными из пути HDFS, полученного из Has Metastore.

SELECT * FROM column_test;

    column_test.name    column_test.email

1   Alpha               alpha@email.com
2   Beta                beta@email.com

Если данные в файле не имеют значения для имени столбца (как показано ниже)

alpha@email.com
beta,beta@email.com

, тогда запрос SELECT будет учитывать alpha@email.com.в качестве значения для столбца «имя» и будет возвращать NULL в качестве значения для столбца «электронная почта» для первой записи.Вывод будет выглядеть следующим образом:

SELECT * FROM column_test;

    column_test.name    column_test.email

1   alpha@email.com     NULL
2   Beta                beta@email.com

Надеюсь, это поможет!

...