2017-10-24 19 views
0

私はブタに2つのデータオブジェクトを持っています。Apache Pigでオブジェクトを結合した後のエラー

DATA_1:

col_a: chararray, 
col_b: int, 
col_c: int, 
col_d: chararray 

DATA_2:

私はそれらの2に参加したい
col_a: chararray, 
col_b: chararray, 
col_c: int, 
col_d: int, 
col_e: int 

、私が試した:

all_data = JOIN data_1 BY (col_a) LEFT, data_2 by (col_b); 
all_data = JOIN data_1 BY (col_a), data_2 by (col_b); 

私はオブジェクトをダンプしようとしたとき(後10レコードに制限)両方のオプションが同じエラーを返しました:

Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 0: Exception while executing (Name: all_data_limit: Limit - scope-6383 Operator Key: scope-6383): org.apache.pig.backend.executionengine.ExecException: ERROR 0: Exception while executing (Name: all_data: New For Each(true,true)[tuple] - scope-6382 Operator Key: scope-6382): org.apache.pig.backend.executionengine.ExecException: ERROR 0: java.lang.ClassCastException: org.apache.pig.impl.io.NullableText cannot be cast to org.apache.pig.impl.io.NullableBytesWritable 
  • 両方のオブジェクト(DATA_1、DATA_2が)戻って良好な出力を与えたため、「説明」(私は一番上に書いたもの)
  • は入社オブジェクトに対して「説明」 - all_dataを、また戻って良好な出力を与え、それはすべきだ。
  • 両方のオブジェクトにLIMIT 10が印刷されました。データは良好です。私は、少しイライラ取得しています。この解決策を見つけることができませんでしたし、私は豚のバージョン0.16.0

で、アマゾンのクラスタ「EMR-5.2.0」を使用してい

  • 今3日間1つを検索してください... 助けが素晴らしいでしょう。 ありがとう!以下

  • +0

    スクリプト全体とサンプルデータを投稿してください。 –

    答えて

    1

    使用は

    all_data = JOIN data_1 BY TRIM(col_a) LEFT, data_2 by TRIM(col_b); 
    all_data = JOIN data_1 BY TRIM(col_a), data_2 by TRIM(col_b); 
    

    はそれがエラーなしで働いていたと思いなら、私に知らせてコマンド。

    +0

    それは実際に働いた - 私はスペースを削除する必要はなかった...でも、なぜそれが助けになるか説明できますか?新しいPigバージョンではなぜそれが問題なのですか?また、同じ問題を、豚0.12でうまく走っているスクリプトで解決し、豚0.17でも同じエラーを出しました。そして、本当にありがとう! – Bramat

    関連する問題