2011-12-14 19 views
8
Pig: 0.8.1-cdh3u2 
Hadoop: 0.20.2-cdh3u0 

Hata ayıklama FIELD_DISCARDED_TYPE_CONVERSION_FAILED uyarıları, ancak her yerde tek tek uyarılar yazdıramıyor gibi görünmüyor. Toplamanın -w veya aggregate.warnings=false anahtarıyla devre dışı bırakılması, özet iletileri kaldırır, ANCAK gerçek uyarıyı da kaldırır, dolayısıyla hangi tür dönüşümün başarısız olduğunu göremiyorum.Domuz toplu olmayan uyarılar çıktı konumu?

Bu çalışma için domuz günlüğünde hiçbir şey yazılmadı, VE günlükleri tek tek uyarılarla bulabileceğim yer yok. Bariz bir şeyi özledim mi, yoksa işe yaramıyor mu?

+0

Bu sorunun cevabını dört gözle bekliyorum. Genellikle kaydı el ile bulurum. –

+0

Her 100 milyona yakın kaydettim ve her satırda 300'den fazla sütunla her gün 1/2 milyon ekliyorum. Ve bunlar ondalık sayılardır. Araç desteği olmadan haystacks alanında iğne aramaktan daha kötüsüdür. – andrew

+0

Düşünebildiğim tek şey, verilerinizi bir "chararray" olarak domuz içine yüklemek ve daha sonra onu dönüştürmeye çalışan bir UDF yazmaktır. Bir istisna atılırsa, öğeyi iade edin (aksi takdirde bir şey iade etmeyin). –

cevap

0

Hadoop iş günlükleri her bir bilgi işlem düğümüne yerel olarak kaydedilir. Bu nedenle öncelikle analiz edebilmek için günlük dosyalarını dağıtılmış dosya sistemine toplamak için hadoop küme yöneticinizi kurmanız gerekir. HDF'ler üzerinde çalıştırabileceğiniz günlükleri aldıktan sonra

log-destination-uri = hdfs://host123:45678/user/hod/logs 

http://hadoop.apache.org/docs/r0.17.0/hod_user_guide.html#Collecting+and+Viewing+Hadoop+Logs

de damacana belgelere bakın: Eğer Hadoop-on-demand (http://hadoop.apache.org/docs/r0.17.0/hod.html) kullanırsanız gibi bir şey belirterek bunu mümkün olmalıdır Hatalı dönüştürmeyi bulmak için basit bir PIG sorgusu.

a1= LOAD '*.log' USING PigStorage(']') ; 
a2= FILTER a1 by ($1 MATCHES ' WARN.*Unable to interpret value.*'); 
dump a2; 
0

Bu soruna neden olan veri veya değer bulmak zor, ama bu sorunu yaratıyor hangi sütunun en azından şunları bulabilirsiniz: aşağıdaki gibi bir şey hile yapmak gerekir. Sütunu bulduğunuzda, tür dönüşümüne yardımcı olabilecek Dinamik Invoker'u kullanabilirsiniz.


Dinamik invoker nasıl kullanılır:
ConvertToDouble InvokeForDouble DEFINE (​​'java.lang.Double.parseDouble', 'Dize');

ConvertToDouble (column_name);