içerecek şekilde genişlet Sekans dosyalarını okuyan özel bir InputFormat oluşturabilmek istiyorum, ancak dosya yolunu ve kaydın bulunduğu dosyanın içindeki ofseti de ekleyebilirim.Dosya adı + ofseti
Geri adım atmak için kullanım durumu şöyledir: Değişken büyüklükteki verileri içeren bir sıra dosyası var. Anahtarlar çoğunlukla ilgisizdir ve değerler çeşitli farklı alanları içeren birkaç megabayttır. Bu alanların bir kısmını elasticsearch'te dosya adı ve ofsetiyle birlikte dizinlemek istiyorum. Bu şekilde, bu alanları elasticsearch'ten sorgulayabilir ve daha sonra tüm dosyayı ES'de saklamak yerine sıra dosyasına geri dönmek ve orijinal kaydı elde etmek için dosya adını ve ofsetini kullanabilirim.
Tüm bu işlemi tek bir java programı olarak çalışıyorum. SequenceFile.Reader sınıfı, bunun gerçekleşmesi için getPosition
ve seek
yöntemlerini uygun bir şekilde verir. Bununla birlikte, sonuçta birçok terabayt veriye yer verilecektir, dolayısıyla bunu bir MapReduce işine dönüştürmem gerekecek (muhtemelen Map-only). Dizi dosyasındaki gerçek anahtarlar ilgisiz olduğundan, benim beklediğim yaklaşım, SquenceFileInputFormat'ı genişleten veya bir şekilde kullanan özel bir InputFormat oluşturmak, ancak gerçek anahtarları döndürmek yerine, dosyadan oluşan birleşik anahtar döndürür ve ofset. Bununla birlikte, uygulamada daha zor olduğu kanıtlanmaktadır. Mümkün gibi görünüyor, ama gerçek API'ler ve maruz kalanlar göz önüne alındığında, bu zor. Herhangi bir fikir? Belki de almam gereken alternatif bir yaklaşım?