在amazonec2中以集群模式读取spark中的文件

iqih9akk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(421)

我试图在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仍然无法读取文件。知道我做错了什么吗。谢谢。

enyaitl3

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 请试试这些东西,我希望它们能为您服务。

相关问题