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")); 

希望这会帮助你。

+0

感谢您的回复。我的意思是,我希望只有在作业运行之前,文件才能在缓存中使用。由于该文件基于job.properties中的内容,每次作业都会随之更改。我的查询是,当我动态创建文件时,文件的绝对路径是'/tmp/myfile6425152127496245866.txt'。但是,一旦我将它放入缓存并稍后尝试引用它,我就会得到'/tmp/myfile6425152127496245866.txt'不存在。难道它是在另一个文件夹中引用文件,而它是在其他地方创建的..? – javauser 2015-03-31 17:22:19

+0

嗯,我认为应该有一些问题与你使用的路径。就我而言,如果我省略了NAME_NODE,我也会失败。但我不知道你的情况是否是相同的情况。 – 2015-03-31 17:57:41