2017-01-22 1 views
2

У меня есть схема таблицы улья, хранящаяся в одном файле hdfs schema.avsc. Я хочу создать таблицу улья той же схемы и хочу сбросить данные с другого пути hdfs, где данные хранятся в файловой системе HDFS.Создайте таблицу улья из схемы таблицы, хранящейся в файле .avsc

1: Как я могу создать таблицу? 2: Как я могу сбросить данные, хранящиеся в файле hdfs, в созданную таблицу?

ответ

2

Как создать таблицу?

В документации на Apache Hive на AvroSerDe показан синтаксис для создания таблицы на основе схемы Avro, хранящейся в файле. Для удобства повторю один из примеров:

CREATE TABLE kst 
    PARTITIONED BY (ds string) 
    ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
    STORED AS INPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 
    OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' 
    TBLPROPERTIES (
    'avro.schema.url'='http://schema_provider/kst.avsc'); 

В этом примере вытаскивается файл схемы с веб-сервера. В документации также отображаются другие параметры, например, вытаскивание из локального файла, в зависимости от ваших конкретных потребностей.

Я рекомендую прочитать всю страницу документации AvroSerDe. Существует много полезной информации о том, как получить максимальную отдачу от использования Hive с Avro.

Как я могу сбросить данные, хранящиеся в файле hdfs, в созданную таблицу?

Вы можете определить внешнюю таблицу, которая ссылается на существующие файлы HDFS. На странице документации для External Tables показан синтаксис. Повторяя пример:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT, 
    page_url STRING, referrer_url STRING, 
    ip STRING COMMENT 'IP Address of the User', 
    country STRING COMMENT 'country of origination') 
COMMENT 'This is the staging page view table' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' 
STORED AS TEXTFILE 
LOCATION '<hdfs_location>'; 

После определения внешней таблицы, вы можете использовать INSERT-SELECT запрос, который считывает из внешней таблицы и записи в таблицу Avro. В документации по Inserting data into Hive Tables from queries описан синтаксис INSERT-SELECT. Например:

FROM page_view_stg pvs 
INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country) 
     SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.cnt 
Смежные вопросы