擅长:python、mysql、java
<p>查看<a href="http://hadoop.apache.org/mapreduce/docs/r0.22.0/streaming.html#Working+with+Large+Files+and+Archives" rel="nofollow">this documentation for Streaming</a>以在Hadoop流作业中使用<a href="http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/filecache/DistributedCache.html" rel="nofollow">Hadoop Distributed Cache</a>。您首先将文件上载到hdfs,然后告诉Hadoop在运行作业之前将其复制到任何地方,然后它会在作业的工作目录中方便地放置一个符号链接。然后就可以使用python的<code>open()</code>来读取带有<code>for line in f</code>的文件或其他任何东西。在</p>
<p>分布式缓存是将文件推送(开箱即用)的最有效方式,以便将作业用作资源。您不只是想从进程中打开hdfs文件,因为每个任务都会尝试通过网络流式传输文件。。。使用分布式缓存,即使多个任务在同一节点上运行,也会下载一个副本。在</p>
<hr/>
<p>首先,在运行作业时将<code>-files hdfs://NN:9000/user/sup.txt#sup.txt</code>添加到命令行参数中。在</p>
<p>然后:</p>
<pre><code>for line in open('sup.txt'):
# do stuff
</code></pre>