gpt4 book ai didi

linux - 如何针对目录中的多个文件执行 Pig 脚本

转载 作者:可可西里 更新时间:2023-11-01 15:02:32 26 4
gpt4 key购买 nike

看起来很简单,我可以用另一种语言轻松地做到这一点,但我正在努力寻找使用 Pig 的答案。我可以每天将一个或多个日志文件转储到一个目录中。我想迭代调用每个文件并将其传递给 Pig 脚本进行处理。我知道参数替换,但如何遍历文件并传递/调用我的 Pig 脚本?谢谢。

最佳答案

你可以直接在 Pig 中使用通配符:

 a= load '/user/hadoop/test/*.csv' using PigStorage(',');
dump a;

如果您的文件存储在您的本地驱动器上,您需要先将它们上传到 HDFS 中:

hadoop fs -put /localdir/*.csv /user/hadoop/test

如果你必须在 Pig 中获取文件列表,你可以创建一个 bash 来初始化这个列表并调用 pig 命令。例如,如果您想要使用名为“httpd-.log”的 5 个最新文件 启动您的 pig 脚本,请创建一个 .sh:

#!/bin/bash
set -e
HDFS_PATH=/user/hadoop/test
FILES=`hadoop fs -ls $HDFS_PATH | grep "httpd" | sort +5 -7 | tail -5 | awk '{ print $8 }'| tr '\n' ','`
pig -f <pig_script> -p files=$FILES

在你的 pig 脚本中:

a= load '$files' using PigStorage(',');

罗曼

关于linux - 如何针对目录中的多个文件执行 Pig 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com