将 pig fs 命令输出到文件或变量
Posted
技术标签:
【中文标题】将 pig fs 命令输出到文件或变量【英文标题】:output pig fs command to a file or a variable 【发布时间】:2017-01-30 01:23:50 【问题描述】:我正在尝试监视我的 HDFS 系统中的文件。
目前,我这样做的方式非常痛苦:fs -ls -R /river/entity/files;
。
此命令在控制台日志文件中输出结果。然后我需要将结果复制/粘贴到文件中以使用它......这根本没有效率。使用PIG,有没有一种简单的方法可以将命令的结果直接输出到文件中?
编辑:谢谢你的答案,但我还不够清楚。对不起 ! 我无法使用终端。我只执行一个猪脚本,我希望我的结果在 HDFS 中。是否可以仅在 hadoop 方面做到这一点?
【问题讨论】:
仅作记录:这可能是可能的,但为此使用 Pig 将始终是一种解决方法/hack,而不是正确的解决方案。 【参考方案1】:是的,你可以!事实上,您可以像这样在 Pig 脚本中执行任何 shell 命令:
%declare dummy `hdfs dfs -ls -R /river/entity/files | hdfs dfs -put - hdfs://nn.example.com/hadoop/myfile.log`
但您应该考虑到 Pig 语句不会按照您的脚本中出现的顺序执行!
【讨论】:
这不会在HDFS中输出结果吧? myfile.log 将在本地。但我无法访问本地。 现在应该写入 hdfs,-
使 put 命令从标准输入读取
这将是一个不错的 hack,@StevenBENET 这似乎是为写入 HDFS 而设计的,你能确认它是否有效吗?【参考方案2】:
只需在终端中输入:
$hadoop fs -ls -R /river > your/path/to/file.txt
或在 shell 脚本示例中编写命令 file.sh
包含以下代码,然后运行你的 shell 脚本:
hadoop fs -ls -R /river > your/path/to/file.txt
如果您使用的是 Pig Grunt shell 或 Pig 脚本,请使用 shell utility commands
示例file_name.pig
包含代码fs -ls -R /river/entity/files
然后从终端运行您的猪脚本,例如PIG file_name.pig > your/path/to/file2.txt
【讨论】:
谢谢你,但我不能使用终端。如果可能的话,我希望一切都在猪身上完成。输出将存储在 HDFS 中以上是关于将 pig fs 命令输出到文件或变量的主要内容,如果未能解决你的问题,请参考以下文章
将 Hadoop Pig 输出作为 JSON 数据发布到 URL?
Node.js - 如何从文件中读取数据并将输出集成到变量中