首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星火将本地文件从主节点分发到节点

星火将本地文件从主节点分发到节点
EN

Stack Overflow用户
提问于 2015-08-14 09:00:45
回答 1查看 2.4K关注 0票数 3

我过去经常在本地运行Spark,并将文件分发给节点从来没有给我带来过问题,但是现在我正在将东西转移到Amazon集群服务中,并且开始出现故障。基本上,我正在使用Maxmind GeoLiteCity.dat来处理一些IP,我把它放在主服务器上的本地文件系统(file:///home/hadoop/GeoLiteCity.dat). )上。

下面是前面的一个问题,我使用了sc.addFile:

代码语言:javascript
复制
sc.addFile("file:///home/hadoop/GeoLiteCity.dat")

然后用这样的方式调用它:

代码语言:javascript
复制
val ipLookups = IpLookups(geoFile = Some(SparkFiles.get("GeoLiteCity.dat")), memCache = false, lruCache = 20000)

当在我的计算机上本地运行时,这是有效的,但似乎在集群上失败了(我不知道失败的原因,但如果有人能告诉我如何显示进程的日志,则从Amazon服务生成的日志不包含任何有关哪个步骤失败的信息,我将不胜感激)。

我必须以某种方式将GeoLiteCity.dat加载到HDFS吗?是否有其他方法可以将本地文件从主节点分发到没有HDFS的节点?

编辑:为了指定我的运行方式,我编写了一个执行多个步骤的json文件,第一步是运行一个bash脚本,它将GeoLiteCity.dat从S3传输到主服务器:

代码语言:javascript
复制
#!/bin/bash
cd /home/hadoop
aws s3 cp s3://test/GeoLiteCity.dat GeoLiteCity.dat

在检查文件在目录中之后,json然后执行Spark,但是失败了。Amazon生成的日志没有显示代码中断的位置。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-14 10:11:07

与其将文件复制到主程序中,不如将文件加载到s3中并从其中读取。

有关从analyzer/chapter2/s3.html读取文件的信息,请参阅S3。

您需要提供AWS访问密钥ID和秘密密钥。要么设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,要么以编程方式设置它,

代码语言:javascript
复制
sc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", YOUR_ACCESS_KEY)
sc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", YOUR_SECRET_KEY)

然后您只需将该文件作为文本文件读取即可。喜欢,

代码语言:javascript
复制
 sc.textFile(s3n://test/GeoLiteCity.dat)

附加参考:How to read input from S3 in a Spark Streaming EC2 cluster application https://stackoverflow.com/a/30852341/4057655

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32006215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档