在PIG中配置LOAD功能

时间:2016-02-05 01:57:14

标签: hadoop apache-pig bigdata

HDFS输入文件=> /用户/ XYZ / ABC /部分-M-00000

文件内容: -

100002030,Tom,peter,eng,block 3,lane 5,california,10021

100003031,Tom,john,doc,block 2,lane 2,california,10021

100004032,Tom,jim,eng,block 1,lane 1,california,10021

100005033,Tom,trek,doc,block 2,lane 2,california,10021

100006034,Tom,peter,eng,block 6,lane 6,california,10021

架构文件 -

rollno,名字,姓氏,资格,地址1,地址,城市,邮政编码

是否可以按以下方式进行加载: -

使用PigStorage(',')输入=加载'/ user / xyz / abc / part-m-00000';

SF = load'user / xyz / abc / sf.txt';

X =使用PigStorage(',')作为(SF)加载'输入';

它不起作用 请注意,我不想对字段名称进行硬编码

感谢快速帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

PigStorage有第二个构造函数,它有多个选项,其中一个是-schema。 根据文档,创建一个包含您的架构的隐藏文件.pig_schema,它将在加载数据时从中加载架构。 更多细节在这里 https://pig.apache.org/docs/r0.10.0/api/org/apache/pig/builtin/PigStorage.html

以下是步骤: 您需要做的第一件事是手动创建架构

// Load data by specifying schema
A = LOAD 'data' USING PigStorage(',') AS (name:chararray, amount:float);
// Now store data in with -schema option to create schema
STORE A INTO 'output' USING PigStorage(',', '-schema');
// above statement will create .pig_schema file in "output" directory. copy this file to your source directory 'data'
Now load data without specifying Schema

A_WITHOUT_SCHEMA = LOAD 'data' USING PigStorage(',');

// view the schema of relation by issuing describe statement.
DESCRIBE A_WITHOUT_SCHEMA;

// The output should be something like 
{name: chararray, amount: float}

我希望澄清解决方案。