2017-02-06 7 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(); 
     } 
    } 

Я хочу создать два поля:

  1. Хобби, который содержит список хобби («Плавание», «Кикбоксинг»)
  2. Объект Учителя, который содержит подполь как: { 'teachername': 'Рэйчел', 'teacherage': 50 }

С кто-нибудь представит пример, как это сделать на Java?

+0

Где источник данных, из которого вы хотели бы создать эти объекты? Вы просто спрашиваете, как создать список строк и объект для заполнения из какого-либо ввода, но в 'java'? – mass

+0

Мне тоже трудно понять, что именно вы просите. Слишком определенно, это похоже на какой-то формат данных, похожий на почти json, который вы хотите создать? – GhostCat

ответ

0

Паркет с колонкой (мини-хранилища) хранение ключей ... I.e. этот вид хранилища не может хранить вложенные данные, но это хранилище принимает преобразование типов данных в двоичный формат (байтовый массив с заголовком, который содержит данные, чтобы понять, какое преобразование должно быть применено к этим данным).

Я не уверен, как вы должны реализовать свой конвертер, но в основном вы должны работать с классом данных Binary в качестве контейнера данных и создавать некоторый конвертер ... примерный преобразователь можно найти для типа данных String.