0

何らかの理由で、Hive は整数として出力された列を認識しませんが、文字列として出力された列を認識します。

RCFileint の適切なレンダリングを妨げているHive または GZ について何かありますか?

私のHive DDLは次のようになります。

create external table if not exists db.table (intField int, strField string) stored as rcfile location '/path/to/my/data';

そして、私のJavaの関連部分は次のようになります:

BytesRefArrayWritable dataWrite = new BytesRefArrayWritable(2);
byte[] byteArray;
BytesRefWritable bytesRefWritable = new BytesRefWritable();                             intWritable.set(myObj.getIntField());
byteArray = WritableUtils.toByteArray(intWritable.get());
bytesRefWritable.set(byteArray, 0, byteArray.length);
dataWrite.set(0, bytesRefWritable);  // sets int field as column 0


bytesRefWritable = new BytesRefWritable();
textWritable.set(myObj.getStrField());
bytesRefWritable.set(textWritable.getBytes(), 0, textWritable.getLength());
dataWrite.set(1, bytesRefWritable);  // sets str field as column 1

Writablesコードは正常に実行され、ログによって、さまざまなバイトが含まれていることがわかります。

Hive は外部テーブルも読み取ることができますが、intフィールドは として表示されNULLエラーを示します

SELECT * from db.table;

OK
NULL    my string field
Time taken: 0.647 seconds

ここで何が起こっているのでしょうか?

4

1 に答える 1