使用pig脚本创建模式

时间:2016-06-29 14:48:24

标签: hadoop apache-pig schema

我需要一些指导/帮助来完成一个简单的任务,在Apache Pig中为我的数据文件创建一个模式。我有两个文件可以完成这项任务。第一个文件是一个数据文件,其中包含没有列标题的数据,第二个文件包含数据文件的列标题。基本上,column_header文件是数据文件的模式。我如何在猪脚本中概述这个?这是我到目前为止所得到的。

column_header = load 'sitecatalyst/coulmn_headers.tsv' using PigStorage('\t');
data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as column_header;
schema = foreach data generate column_header;
store schema into 'output1' using PigStorage('\t', '-schema');
withSchema = load 'output1';
describe withSchema;

这是

的输出
DUMP column_header

(accept_language,浏览器,browser_height,browser_width)

当我这样做时,

DUMP data;

只输出第一行数据,这是错误的。

的en-US

的en-US

的en-US

的en-US

应该是,

en-US 638 755 1600

en-US 638 655 1342

en-US 638 723 1612

en-US 638 231 1234

我如何欺骗Pig使用" column_header"作为一个字符串,可以在第二行代码的PigStorage AS语句中使用?

编辑: 这段代码可行,但我不想硬编码我的column_header,而是希望猪脚本能够读取它。

column_header = load 'sitecatalyst/coulmn_headers.tsv' using PigStorage('\t');
data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as (accept_language,browser,browser_height,browser_width);
schema = foreach data generate accept_language,browser,browser_height,browser_width;
store schema into 'output1' using PigStorage('\t', '-schema');
withSchema = load 'output1';
describe withSchema;

1 个答案:

答案 0 :(得分:0)

你无法直接在pig脚本中实现这样的参数化,

你可以做同样的事情
data = load 'sitecatalyst/hit_data.tsv' using PigStorage('\t') as $column_header;
schema = foreach data generate column_header;
store schema into 'output1' using PigStorage('\t', '-schema');
withSchema = load 'output1';
describe withSchema;

并运行猪脚本, pig -param_file(文件的位置)列

该文件应为格式 column_header =完整架构

https://blogs.msdn.microsoft.com/bigdatasupport/2014/08/12/how-to-use-parameter-substitution-with-pig-latin-and-powershell/