gpt4 book ai didi

hadoop - 将 Hadoop Pig 输出作为 JSON 数据发布到 URL?

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

我有一个 Pig 作业,它分析日志文件并将摘要输出写入 S3。我不想将输出写入 S3,而是想将其转换为 JSON 负载并将其发布到 URL。

一些注意事项:

  • 此作业在 Amazon Elastic MapReduce 上运行。
  • 可以使用STREAM 通过外部命令传输数据,然后从那里加载数据。但是因为 Pig 从不向外部命令发送 EOF,这意味着我需要在每一行到达时对其进行 POST,而且我无法对它们进行批处理。显然,这会影响性能。

解决此问题的最佳方法是什么? PiggyBank 或其他图书馆中有我可以使用的东西吗?或者我应该写一个新的存储适配器?谢谢你的建议!

最佳答案

您可以编写 UDF 而不是流式传输(因为 UDF 的确实提供了 finish() 回调)[1]

另一种方法是将 POST 作为第二次传递数据。

  1. 你现有的 pig step,它只是将 json 字符串写到一个关系中
  2. 使用 NLineInputFormat 批量执行 POST 的简单流作业

我一直喜欢这种方法,因为它分离了关注点并使 pig 代码变得干净。

它还允许您(在我看来)在作业的 POST 部分使用更简单的调整选项。在这种情况下,根据接收 web 服务的幂等性,关闭推测执行对您来说(可能)很重要。请注意,运行 大量 并发作业的集群也可能完全杀死服务器 :D

例如,以 20 为一组......

$ hadoop jar ~/contrib/streaming/hadoop-streaming.jar \  -D mapred.line.input.format.linespermap=20 \  -D mapred.reduce.tasks.speculative.execution=false \  -input json_data_to_be_posted -output output \  -mapper your_posting_script_here.sh \  -numReduceTasks 0 \  -inputformat org.apache.hadoop.mapred.lib.NLineInputFormat

[1] http://pig.apache.org/docs/r0.7.0/api/org/apache/pig/EvalFunc.html#finish%28%29

关于hadoop - 将 Hadoop Pig 输出作为 JSON 数据发布到 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6505967/

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