2017-02-06 9 views
6

ネストされたフィールドを含むパーケットファイルを作成するにはどうすればよいですか?私は、次のしている:寄木張りファイルに入れ子オブジェクトと配列を作成するには?

public static void main(String []args) throws IOException{ 


     int fileNum = 10; //num of files constructed 
     int fileRecordNum = 50; //record num of each file 
     int rowKey = 0; 
     for(int i = 0; i < fileNum; ++ i) { 

      Map<String, String> metas = new HashMap<>(); 
      metas.put(HConstants.START_KEY, genRowKey("%10d", rowKey + 1)); 
      metas.put(HConstants.END_KEY, genRowKey("%10d", rowKey + fileRecordNum)); 

      ParquetWriter<Group> writer = initWriter("pfile/scanner_test_file" + i, metas); 

      for (int j = 0; j < fileRecordNum; ++j) { 
       rowKey ++; 
       Group group = sfg.newGroup().append("rowkey", genRowKey("%10d", rowKey)) 
         .append("cf:name", "wangxiaoyi" + rowKey) 
         .append("cf:age", String.format("%10d", rowKey)) 
         .append("cf:job", "student") 
         .append("timestamp", System.currentTimeMillis()); 
       writer.write(group); 
      } 

      writer.close(); 
     } 
    } 

は、私は2つのフィールドを作成したい:

  1. 趣味のリスト(「水泳」、「キックボクシング」)
  2. サブフィールドが含まれている教師のオブジェクトが含まれています趣味等: { 'teachername': 'レイチェル' 'teacherage':50 }

C誰かがJavaでこれを行う方法の例を提供していますか?

+0

これらのオブジェクトを作成するデータソースはどこにありますか?あなたは単に文字列のリストを作成する方法と、何らかの入力から生成するオブジェクトを作る方法を尋ねていますか? – mass

+0

私はあまりにも正確にあなたが求めているものを理解するのに苦労しています。ある程度までは、作成したいデータ形式のような、ほとんどのjsonのように見えますか? – GhostCat

答えて

0

寄木細工は、コラム(ミニストレージ)キーバリューストアです。この種類のストレージはネストされたデータを保持できませんが、このストレージは論理のデータをバイナリ形式(このデータに適用する変換の種類を理解するためのデータを含むバイト配列)に変換できます。

私はあなたのコンバーターをどのように実装すべきか分かりませんが、基本的にはデータコンテナとしてBinaryクラスを使用し、いくつかのコンバーターを作成する必要があります... Stringデータ型のサンプルコンバーターを作成してください。

関連する問題