gpt4 book ai didi

java - 如何在 Hadoop 的 java/terminal 中指定文件的路径?

转载 作者:可可西里 更新时间:2023-11-01 16:39:59 26 4
gpt4 key购买 nike

我正在 Hadoop2 上运行一个任务:

$hadoop jar hipi.jar "/5" "/processWOH" 1

hipi.jar:jar文件名

"/5":输入的文件夹名

"/processWOH":输出文件夹名

我收到关于路径/localhost:9000/5/LC814000.tif 的异常:

Error: java.io.FileNotFoundException: /localhost:9000/5/LC814000.tif (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at ProcessWithoutHIPI.ProcessRecordReaderWOH.getCurrentKey(ProcessRecordReaderWOH.java:81)
at ProcessWithoutHIPI.ProcessRecordReaderWOH.getCurrentKey(ProcessRecordReaderWOH.java:1)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.getCurrentKey(MapTask.java:507)
at org.apache.hadoop.mapreduce.task.MapContextImpl.getCurrentKey(MapContextImpl.java:70)
at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.getCurrentKey(WrappedMapper.java:81)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:167)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)

我认为(我不确定)将额外的“/localhost:9000”添加到路径的问题,但我不知道它是如何添加的(通过 hadoop、java 代码,...)。

注意:这个 jar 文件在 hadoop 之外运行良好,但在 hadoop (hdfs) 中却不是

感谢任何帮助

更新:正如我后来发现的那样,“/5”文件夹是在本地系统中而不是在 hdfs 中搜索的,如果我在本地文件系统中创建一个名为“localhost:9000”的文件夹,在 root 下,即/localhost:9000 并放置“/5”代码将运行,但在这种情况下,数据是从 hadoop 外部获取的,就像我根本不使用 hadoop 一样。那么这是编程中的错误吗,即我应该使用 hadoop io 包而不是 java io 包来处理 hdfs 而不是本地文件系统,或者这是另一个问题。?

最佳答案

你的hdfs的默认目录是/localhost:9000/,hadoop在那里找不到你的输入文件;刚刚在/localhost:9000/中通过它:

$hadoop fs -put $LOCAL_PATH_OF_INPUT_FILE:/5 /localhost:9000/
$hadoop jar hipi.jar "/5" "/processWOH" 1

祝你好运!

关于java - 如何在 Hadoop 的 java/terminal 中指定文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43006608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com