我正在开发一个应用程序,我从hadoop读取文件,处理数据并将数据存储回hadoop。 我很困惑正确的 hdfs 文件路径格式应该是什么。当从 Spark shell 读取 hdfs 文件时,例如
val file=sc.textFile("hdfs:///datastore/events.txt")
它工作正常,我能够阅读它。
但是当我将 jar 提交到包含相同代码集的 yarn 时,它会给出错误消息
org.apache.hadoop.HadoopIllegalArgumentException: Uri without authority: hdfs:/datastore/events.txt
当我将名称节点 IP 添加为 hdfs://namenodeserver/datastore/events.txt
时,一切正常。
我对这种行为有点困惑,需要指导。
注意:我使用的是 aws emr 设置,所有配置均为默认配置。
最佳答案
如果您想使用 sc.textFile("hdfs://...") 您需要提供完整路径(绝对路径),在您的示例中为“nn1home:8020/..”
如果你想让它变得简单,那么只需使用 sc.textFile("hdfs:/input/war-and-peace.txt")
只有一个/
我认为它会起作用。
关于apache-spark - Spark中的HDFS文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50172685/