【发布时间】:2016-12-29 18:09:20
【问题描述】:
我想创建一个外部表并通过 pig 脚本将数据加载到其中。我遵循以下方法:
好的。在 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('|');
确保 Pigscript 中最终 FOREACH 语句的目标位置、分隔符和架构布局与 Hive DDL 架构匹配。
我的问题是,当我第一次创建表时,它正在 hdfs 中创建一个目录,当我尝试使用脚本存储文件时,它会抛出一个错误,提示“文件夹已存在”。看起来猪存储总是写入一个只有特定名称的新目录?
有什么办法可以避免这个问题吗?
还有我们可以在 PIG 中使用 STORE 命令来每次写入特定目录/文件的任何其他属性吗?
谢谢 拉姆
【问题讨论】:
标签: hive apache-pig