我试图在amazonec2中使用
spark-submit --master spark://<master-ip>:7077 --deploy-mode cluster --class com.mycompany.SimpleApp ./spark.jar
类中有一行尝试读取文件:
JavaRDD<String> logData = sc.textFile("/user/input/CHANGES.txt").cache();
我无法在群集模式下读取此txt文件,即使我可以在独立模式下读取。在集群模式下,它希望从hdfs读取数据。因此,我使用
hadoop fs -mkdir -p /wordcount/input
hadoop fs -put /app/hadoop/tmp/input.txt /wordcount/input/input.txt
我可以用 hadoop fs -ls /workcount/input
. 但spark仍然无法读取文件。知道我做错了什么吗。谢谢。
1条答案
按热度按时间enyaitl31#
您可能需要检查以下几点:
文件真的在持久hdfs中吗?
似乎您只是从
/app/hadoop/tmp/input.txt
至/wordcount/input/input.txt
,都在节点磁盘中。我相信你误解了hadoop
命令。相反,您应该尝试将文件显式地放入持久hdfs中(
root/persistent-hdfs/
),然后使用hdfs://...
前缀。持久的hdfs服务器启动了吗?
请看这里,似乎spark默认只启动短暂的hdfs服务器。要切换到持久hdfs服务器,必须执行以下操作:
1) 停止短暂的hdfs服务器:
/root/ephemeral-hdfs/bin/stop-dfs.sh
2) 启动持久hdfs服务器:/root/persistent-hdfs/bin/start-dfs.sh
请试试这些东西,我希望它们能为您服务。