问题标签 [emr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1991 浏览

amazon-s3 - 无法解决错误 2017:运行 PIG 时在 EMR 上创建作业配置的内部错误

我一直在尝试在 Amazon EMR 上使用 Pig 运行一个非常简单的任务。当我在交互式 shell 中运行命令时,一切正常。但是当我运行与批处理作业相同的事情时,我得到了

[main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 2017:创建作业配置的内部错误。

并且运行脚本失败。这是我的 7 行脚本。它只是计算 Google bigrams 元组的平均值。mc 是匹配计数,vc 是音量计数。

我猜这个错误与 STORE 和 s3 路径有关。所以我尝试了各种组合,比如使用 $OUTPUT、反斜杠等。但总是遇到同样的错误。任何帮助将不胜感激。

0 投票
2 回答
942 浏览

hadoop - EMR 上的猪:如何在 EXTRACT 函数的正则表达式参数中包含分号

我正在处理 Pig 中的一些数据,其中包括感兴趣的字符串,可选地用分号分隔并以随机顺序,例如

以下代码应提取测试“键”的字符串值:

但是,在运行代码时,我遇到以下错误:

我以为我一开始就关闭了正则表达式转义语法,但这似乎不是问题。我从 Google 搜索中获得的唯一信息是一个似乎最近已修复的错误报告,但它仍然是我正在运行的 Amazon EMR 集群上的一个问题(为了进行分析,刚刚启动了 ad hoc)。

正如错误报告中和其他地方所建议的那样,将分号替换为其 Unicode 等效项 (\u003B) 会产生相同的错误。

我可能疯了,这可能是一个语法问题,所以我希望有人能够指出我正确的方向或确认这是一个现有的问题。如果是后者,是否有任何解决方法(在 Pig 中或匹配我想要的字符串)?

干杯

0 投票
2 回答
906 浏览

amazon-web-services - 无法下载或读取 Amazon S3 存储桶中的 Hive 输出

我是 AWS 和 Hive 的新手,我正在尝试使用 Hive 分析 Google Ngrams 数据。我试图在 S3 存储桶中将表格另存为制表符分隔的 CSV,但现在我不知道如何查看或下载它以查看我的工作是否正确执行。

我用来创建表的查询是

然后我用数据填充表格:

查询运行良好,我认为一切正常。但是,当我在线导航到 S3 管理控制台中的存储桶时,文本文件显示为包含一堆文件的文件夹。这些文件有很长的十六进制字符名称,大小为 0 字节。

这只是表示为目录的文本文件吗?有没有办法可以查看或下载文件以查看我的查询是否有效?我试图将目录公开以便我可以下载它,但“操作”下拉菜单中的下载按钮仍然是灰色的。

0 投票
1 回答
1321 浏览

python - 使用 Map Reduce 拆分文件

我想使用 EMR 将文本文件的内容拆分为 2 个不同的文件。输入文件以及 mapper 和 reducer 脚本都存储在 AWS 的 S3 中。目前,我的映射器通过制表符分隔整个文件中的每个字段来重新格式化标准输入的输入。

我的减速器是魔法发生的地方。我希望减速器根据特定字段的值将此文本文件拆分为 2 个不同的文件。这是我当前的 reducer.py 代码

此 EMR 作业失败并返回以下错误消息:由于步骤失败而关闭。我已经在每一行上使用 fileReaders 在本地测试了这两个脚本,并且它可以工作。将任务导入 EMR 会导致问题。我的问题是: - 是否可以使用 EMR 将文件拆分为 2 个或更多文件?- 如果是这样,S3 是否会阻止我动态创建新文件,从而导致 EMR 作业失败?- 还是我的代码行为错误?

我感谢任何和所有的反馈。

谢谢你。

0 投票
1 回答
1321 浏览

python - 在python boto中映射减少多个输出

我正在尝试使用 AWS EMR 对输入文件进行分区。我使用流式步骤从标准输入读取。
我想根据每行标准输入的特定字段的值将此文件拆分为 2 个文件,并将结果输出存储到 S3 以供以后使用。我找不到任何关于如何使用 python 实现这一点的文档。你能为我指出正确的方向吗?我将不胜感激。

谢谢

0 投票
1 回答
853 浏览

hadoop - Amazon Elastic MapReduce 的模式匹配输入文件

我正在尝试运行 MapReduce 流作业,该作业从与给定模式匹配的 s3 存储桶中的目录中获取输入文件。模式类似于bucket-name/[date]/product/logs/[hour]/[logfilename]. 一个示例日志将在一段时间后出现bucket-name/2013-05-02/product/logs/05/log123456789

我可以通过仅将文件名的小时部分作为通配符传递来完成这项工作。例如:bucket-name/2013-05-02/product/logs/*/。这成功地从每小时中挑选出每个日志文件,并将它们单独传递给映射器。

问题来了,我尝试将日期设为通配符,例如:bucket-name/*/product/logs/*/. 当我这样做时,会创建作业,但不会创建任何任务,最终会失败。此错误会打印在 syslog 中。

0 投票
1 回答
2226 浏览

hadoop - Concatenate S3 files to read in EMR

I have an S3 bucket with log files that I want to concatenate, then use as an input to an EMR job. The log files are in paths like: bucket-name/[date]/product/out/[hour]/[minute-based-file]. I'd like to take all the minute logs in all the hour directories in all the date directories, and concatenate them into one file. I want to use that file as an input to an EMR job. The original log files need to be preserved, and the new combined log file will probably be written to a different S3 bucket.

I tried using hadoop fs -getmerge on the EMR master node via SSH, but got this error:

This file system object (file:///) does not support access to the request path 's3://target-bucket-name/merged.log'

The source S3 bucket has some other files in it, so I don't want to include all of its files. The wildcard match looks like this: s3n://bucket-name/*/product/out/*/log.*.

The purpose is to get around the problem of having tens/hundreds of thousands of small (10k-3mb) input files to EMR, and instead give it one large file that it can split more efficiently.

0 投票
1 回答
1825 浏览

java - Amazon EMR:java.io.IOException:文件已存在:s3n:///输出/part-r-00002

我正在运行 MapReduce 作业。我的代码只包含一个进行简单计算的类。它在hadoop1.0.3的单节点设置上成功运行当我在EMR上运行它时,我收到以下错误

0 投票
2 回答
571 浏览

amazon-s3 - 如何使用 s3distcp 选择日期范围?

我在 s3 中有如下所示的日志,名称中带有时间戳。我想使用 s3distcp 将数据导入 EMR,这样我就可以使用 hive。

如何使用 s3distcp 选择日期范围?例如从 201303031003 到 201305031003?那是两个月的差异

0 投票
1 回答
733 浏览

java - hadoop/emr 如何存储键值对

我正在 EMR 上运行一系列MapReduce作业。但是,第 3 个MapReduce作业需要第 2 个MapReduce作业的数据输出,输出本质上是超过一百万个键值对(键和值都小于 1KB)。有没有一种好方法可以将此信息存储在与 EMR 相同的机器上的分布式存储中,以便后续作业可以访问该信息?我看了看DistributedCache,但它更多的是用于存储文件吗?我不确定 Hadoop 是否针对存储一百万个小文件进行了优化..

或者也许我可以以某种方式使用另一项MapReduce工作将所有键值对组合到一个输出文件中,然后将整个文件放入DistributedCache.

请指教。谢谢!