我需要一些指导/帮助来完成一个简单的任务,在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;
答案 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 =完整架构