如何在镶木地板文件中创建嵌套对象和数组?

时间:2017-02-06 18:23:10

标签: java parquet

如何使用嵌套字段创建镶木地板文件?我有以下内容:

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. 爱好包含爱好列表(&#34;游泳&#34;,&#34;跆拳道&#34;)
  2. 包含以下子字段的教师对象: { &#39; teachername&#39;:&#39; Rachel&#39;, &#39; teacherage&#39; 50 }
  3. 有人可以提供一个如何在Java中执行此操作的示例吗?

1 个答案:

答案 0 :(得分:-3)

Parquet columned (迷你存储)键值存储... I.e。这种存储不能保留嵌套数据,但是此存储接受将逻辑类型的数据转换为二进制格式(包含数据的字节的字节数组,以了解应该对此数据应用何种类型的转换)。

我不确定您应该如何实现转换器,但基本上您应该使用Binary类作为数据容器并创建一些转换器...您可以找到String数据的示例转换器类型。