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

FIELD_DISCARDED_TYPE_CONVERSION_FAILED警告をデバッグ、私はどこにも印刷された個々の警告を作るように見えることはできません。 -wまたはaggregate.warnings=falseスイッチを介して集約を無効にするには、要約メッセージを削除しますが、それはあまりにも、実際の警告を削除しないので、私は失敗したどのようなタイプの変換を見ることができません。豚集約されていない警告出力場所?

この実行のための豚のログに書かれたものは何もありません、と私は、個々の警告とログを見つけることができない場所ではありません。私は明らかに何かを欠場したか、それとも単に機能しませんでしたか?

+0

私はこの質問の答えを楽しみにしています。私は通常、手動でレコードを見つける。 –

+0

私はすでに1億レコード近くにあり、毎日300万以上の列で1日に2万人を追加しています。これらは小数です。ツールサポートなしでは、干草の畑で針を探しているよりも悪いです。 – andrew

+0

私が考えることのできる唯一のことは、あなたのデータをブタに 'chararray'としてロードし、それを変換しようとするUDFを書くことです。例外がスローされた場合は、その項目を返します(それ以外の場合は何も返しません)。 –

答えて

0

Hadoopのジョブ・ログは、各計算ノード上でローカルに記録されています。そのため、最初にhadoopクラスタマネージャをセットアップして、分散ファイルシステム上にログファイルを収集して分析できるようにする必要があります。

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

あなたはHDFS上のログを持っていた後、あなたが実行することができますhttp://hadoop.apache.org/docs/r0.17.0/hod_user_guide.html#Collecting+and+Viewing+Hadoop+Logs

でHODのマニュアルを参照してください:あなたはHadoopのオンデマンド(http://hadoop.apache.org/docs/r0.17.0/hod.html)を使用する場合は、次のようなものを指定することによって、それを行うことができるはずです問題のある変換を見つけるための簡単なPIGクエリ。

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

それが問題の原因であるデータまたは値を見つけることは困難ですが、この問題を作成しているコラム少なくとも、あなたは見つけることができます:次のようなものは、トリックを行う必要があります。列が見つかると、Dynamic Invokerを使用して型変換に役立てることができます。動的な実行者を使用する方法


ConvertToDouble InvokeForDouble( 'java.lang.Double.parseDouble'、 '文字列')を定義します。

ConvertToDouble(COLUMN_NAME)。

関連する問題