hadoop写入文件并放入分布式缓存
问题描述:
我需要根据hadoop job.properties中的内容创建一个动态文件,然后将其放入分布式缓存中。hadoop写入文件并放入分布式缓存
当我创建文件时,我发现它是用“/ tmp”的路径创建的。
我创建了一个符号名称并在缓存中引用此文件。现在,当我尝试读取Dis中的文件时。缓存我无法访问它。我得到th错误:java.io.FileNotFoundException:请求的文件/tmp/myfile6425152127496245866.txt不存在。
您能否让我知道如果我需要在创建文件时指定路径,并在访问/读取文件时使用该路径。
我只需要文件在作业运行前才可用。
答
我真的不明白你的
意思,我只需要该文件只提供直到作业运行
但是,当我的做法是使用分布式缓存,我使用这样的路径:
final String NAME_NODE = "hdfs://sandbox.hortonworks.com:8020";
job.addCacheFile(new URI(NAME_NODE + "/user/hue/users/users.dat"));
希望这会帮助你。
感谢您的回复。我的意思是,我希望只有在作业运行之前,文件才能在缓存中使用。由于该文件基于job.properties中的内容,每次作业都会随之更改。我的查询是,当我动态创建文件时,文件的绝对路径是'/tmp/myfile6425152127496245866.txt'。但是,一旦我将它放入缓存并稍后尝试引用它,我就会得到'/tmp/myfile6425152127496245866.txt'不存在。难道它是在另一个文件夹中引用文件,而它是在其他地方创建的..? – javauser 2015-03-31 17:22:19
嗯,我认为应该有一些问题与你使用的路径。就我而言,如果我省略了NAME_NODE,我也会失败。但我不知道你的情况是否是相同的情况。 – 2015-03-31 17:57:41