如何从s3获取数据并将其用于弹性Mapreduce/在何处编写代码?

uoifb46i  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(381)

我有两个大文件,将它们上传到一个名为“ccssdd”的amazons3 bucket中,并创建了一个名为data的文件夹:data/friendships.xml data/users.xml
用户结构为

<user>
    <id>1</id>
    <age>24</age>
    <x>4</x>
    <y>7</y>
    <interest>football</ineterest>
    </user>

<user>
..

以及

<friendship>
    <user1>1</user1>
    <user2>3</user2>
    </friendship>
    <friendship>

..

我需要编写一个jobjar在amazon上运行它:计算每个用户的好友数。
我知道我应该从每个友谊元素中生成成对的元素作为map函数的输出,在reduce函数中,我应该为每个userid求和“1”。
我知道我可以在eclipse中运行我的应用程序来生成.jar作业文件,但我不知道应该下载什么库并添加到项目中。
2-我真的不知道如何将我的应用程序连接到s3!然后逐个获取xml元素并从中提取用户id
请帮我一下。我发现这个教程和我的问题非常相似,但是当我把它复制到eclipse时,几乎每一行都会出错,没有一个.org库是已知的,而且。。。另外,我不知道如何访问s3上的数据文件。。。

zour9fqk

zour9fqk1#

这里有一种方法。
使用cloudera、maprr或其他任何地方的发行版,并使用发行版中可用的hadoop版本(jar)。确保你在当地彻底地测试你的工作,这样你就有信心一切正常。这是因为亚马逊会按每小时收费(每台机器),即使你的工作只有30秒就失败了。
一旦你有信心,创建一个“uberjar”,包含你所有的代码和你使用的hadoopjar中的所有类。
将jar和数据上传到s3,如本优秀教程所述。emr与s3无缝配合。
按照教程中所述运行作业。如果出现问题,请在作业完成后等待一段时间检查日志,因为存在延迟。
希望有帮助。

相关问题