2012-07-11 15 views
6

giriş dosyasının adını alır. Girişim HDFS'deki bir dizindeki dosyalardan gelecek. Dosya adlarında, dosyalarda bulunmayan küçük ancak önemli bir parça bilgisi bulunur. Belirli bir anahtar-değer çiftinin geldiği giriş dosyasının adı (harita fonksiyonu içinde) var mı?Ben mrjob kullanarak bir harita işlevi yazıyorum Nasıl MRjob

Bu Java kodunun eşdeğer arıyorum: önceden

FileSplit fileSplit = (FileSplit)reporter.getInputSplit(); 
String fileName = fileSplit.getPath().getName(); 

Teşekkür!

cevap

6

map.input.file mülkiyet girdi dosyası adını verecektir. Yapılandırma geçirilir Mapper veya redüktör için yapılandırma() yöntemin bir uygulama sağlayarak eski MapReduce API elde edilen özellikler işin yapılandırmasından erişilebilir Hadoop - The Definitive Guide

göre

bir argüman olarak. Yeni API'de, bu özelliklere Mapper veya Reducer'ın tüm yöntemlerine iletilen bağlam nesnesinden erişilebilir.

+1

Ve fazla bilgi Buna benzer bir soruya praveen en ilgili kişiden bulunabilir - http://stackoverflow.com/ sorular/7449756/get-input-dosya adı-in-akış-Hadoop-programda –

+4

sayesinde @PraveenSripati ve @ChrisWhite, bu tam olarak ne gerekli olduğunu! Gelecekteki ziyaretçiler için açıkça belirtmek için: 'fileName = os.environ ['map_input_file']' hile yapar. – Bolo

5

Eğer Python ile Hadoop 2.x kullanıyorsanız:

file_name = os.environ['mapreduce_map_input_file'] 
+0

Bunlar çevrimiçi bir yerde mi listelenmiş veya bunları bulmak için kaynak koduna göz atmam gerekiyor mu ?! – masu

+1

bu işe yaramıyor – Dinesh

İlgili konular