【问题标题】:Creating schema using pig script使用 pig 脚本创建模式
【发布时间】:2016-12-12 12:04:20
【问题描述】:

我需要一些指导/帮助来完成一项简单任务,以便在 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,browser_height,browser_width)

当我这样做时,

DUMP data;

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

zh-CN

zh-CN

zh-CN

zh-CN

应该是这样,

zh-CN 638 755 1600

zh-CN 638 655 1342

zh-CN 638 723 1612

zh-CN 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;

【问题讨论】:

  • 问题不清楚你需要什么..
  • 嗨,Sandeep,问题的哪一部分不清楚?我只需要为我的数据文件创建一个模式。我有一个文件,其中包含数据文件的列标题。我如何做到这一点?
  • 你在看什么你想为输出文件或你正在做的任何其他事情设置标题......
  • 我不想设置标题或任何东西。我只需要数据文件的文档设计(Schema)。在代码中我将其输出到文件中。
  • 觉得这不是创建设计文档的正确方式。

标签: hadoop apache-pig schema


【解决方案1】:

你不能直接在 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 脚本, pig -param_file(文件位置)列

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

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

【讨论】:

  • 你试过了吗?我认为$column_header 将被不适合指定架构的文字字符串替换!
  • 嗨@pratiklodha,感谢您抽出宝贵的时间。我尝试了您提供的解决方案,但它不起作用。因为文件 column_header 由制表符分隔。当我做AS $column_header 时,它应该具有这种格式:(accept_language,browser,browser_height,browser_width) 我可以从DUMP column_header 获得。抱歉我的解释不好
猜你喜欢
  • 2016-06-14
  • 2012-01-25
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
相关资源
最近更新 更多