Spark/Hadoop在AWS EMR上找不到文件

3

我正在尝试使用Python Spark库在Amazon EMR上读取文本文件。该文件位于主目录(/home/hadoop/wet0)中,但Spark似乎无法找到它。

疑问的行:

lines = spark.read.text(sys.argv[1]).rdd.map(lambda r: r[0])

错误:

pyspark.sql.utils.AnalysisException: u'Path does not exist: hdfs://ip-172-31-19-121.us-west-2.compute.internal:8020/user/hadoop/wet0;'

这个文件必须放在特定的目录里吗?我在AWS网站上找不到任何相关信息。


1
你介意打印 'hadoop fs -ls /user/hadoop/' 的输出吗? - eliasah
2个回答

3
如果文件在本地文件系统中,URL 应该是 file://user/hadoop/wet0。如果文件在 HDFS 中,那么路径应该有效。使用 hadoop fs 命令查看一下。
例如:hadoop fs -ls /home/hadoop 需要注意的是,您说它在"/home/hadoop"中,但错误路径为"/user/hadoop"。请确保您在命令行中没有使用 ~,因为 bash 会在 spark 看到它之前进行扩展。最好使用完整路径 /home/hadoop。

谢谢,这就是问题所在。 - NmdMystery

1
我不知道是不是只有我遇到了这个问题,但当我尝试使用上面的建议解决问题时,在我的EMR中出现了"路径不存在"的错误。我只是在"user"之前添加了一个"/",然后它就起作用了。
文件:///user/hadoop/wet0
感谢您的帮助!

2
这更适合作为对已接受答案的评论 - 因为它似乎提供了一种替代方案,而不是(显然非常重要的)改进。感谢分享信息! - dlchet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接