簡體   English   中英

在每個映射器之間共享特定數據

[英]Share specific data between each mapper

我想添加一個特定的記錄子集,以便與每個映射器中的每個記錄塊合並。通常如何在Hadoop中做到這一點? 在Python流包mrJob中?

不知道您到底想做什么,但是也許您可以使用Distributed Cache功能來實現。

分布式緩存的示例用例:

Input to mapper: customer reviews
You want to process only those reviews which contain certain keywords, which are stored in a "words.txt" file. 
You can put words.txt into the Distributed Cache, which makes it available to the mapper & reducer. 

不知道如何精確地完成Python流傳輸,但是應該不難發現

DistributedCache是​​Map-Reduce框架提供的一種工具,用於緩存應用程序所需的文件(文本,檔案,罐子等)。

應用程序通過URL(hdfs://或http://)指定要通過JobConf緩存的文件。 DistributedCache假定通過hdfs:// URL指定的文件已經存在於文件系統中該URL指定的路徑中。

在作業的任何任務在該節點上執行之前,該框架會將必要的文件復制到該從節點上。 其效率源於以下事實:每個作業僅復制一次文件,以及緩存未在從屬服務器上存檔的存檔的能力。

DistributedCache可用於分發簡單的只讀數據/文本文件和/或更復雜的類型,例如檔案,罐子等。檔案(zip,tar和tgz / tar.gz文件)在從屬節點未歸檔。 可以選擇將Jars添加到任務的類路徑中,這是基本的軟件分發機制。 文件具有執行權限。 用戶也可以選擇將其定向以將分布式緩存文件符號鏈接到任務的工作目錄中。

DistributedCache跟蹤緩存文件的修改時間戳。 顯然,在執行作業時,不應由應用程序或在外部修改緩存文件。

對於Python mrJob:-

我想你必須使用

mrjob.compat.supports_new_distributed_cache_options(版本)

然后使用-files和-archives代替-cacheFile和-cacheArchive

也許你會在這里得到更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM