Я хотел создать внешнюю таблицу и загрузить данные через скрипт свиньи. Я придерживался подхода ниже:Запись данных с использованием внешней таблицы PIG to HIVE
ОК. Создайте таблицу внешнего улья с компоновкой схемы где-нибудь в каталоге HDFS. Скажем,
create external table emp_records(id int,
name String,
city String)
row formatted delimited
fields terminated by '|'
location '/user/cloudera/outputfiles/usecase1';
Просто создайте таблицу, как указано выше, и не нужно загружать файлы в этот каталог.
Теперь написать Pig сценарий, который мы читаем данные для какого-нибудь каталога ввода, а затем, когда вы храните вывод, что использование Pig сценария, как показано ниже
A = LOAD 'inputfile.txt' USING PigStorage(',') AS(id:int,name:chararray,city:chararray);
B = FILTER A by id > = 678933;
C = FOREACH B GENERATE id,name,city;
STORE C INTO '/user/cloudera/outputfiles/usecase1' USING PigStorage('|');
Убедитесь, что место назначения и разделитель и расположение схемы конечного FOREACH заявление в вас Pigscript соответствует схеме Hive DDL.
Моя проблема, когда я впервые создал таблицу, он создает каталог в HDFS, и когда я попытался сохранить файл, используя сценарий, он выдает ошибку говоря «папка уже существует». Похоже, что магазин свиней всегда пишет в новый каталог только с определенным именем?
Есть ли способ избежать этой проблемы?
И есть ли какие-либо другие атрибуты, которые мы можем использовать с командой STORE в PIG для записи в конкретный файл/файл каждый раз?
Благодаря Ram