【问题标题】:How to create nested object and array in parquet file?如何在镶木地板文件中创建嵌套对象和数组?
【发布时间】:2017-02-06 18:23:09
【问题描述】:

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

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. 包含子字段的教师对象,例如: { “老师姓名”:“雷切尔”, “教师”:50 }

有人可以提供一个如何在 Java 中执行此操作的示例吗?

【问题讨论】:

  • 您想从哪里创建这些对象?您是否只是在问如何创建字符串列表和要从某种输入中填充的对象,但在 java 中?
  • 我也很难理解你到底想要什么。在某种程度上,这看起来像你想要创建的一些类似于 json 的数据格式?

标签: java parquet


【解决方案1】:

Parquet 是(小型存储)键值存储...即这种存储不能保留嵌套数据,但这种存储接受将 逻辑 类型的数据转换为二进制格式(带有包含数据的字节数组,以了解应该对该数据应用什么样的转换)。

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

【讨论】:

  • Parquet 绝对支持嵌套结构 (parquet.apache.org/documentation/latest) Parquet 从一开始就考虑到了复杂的嵌套数据结构
  • Parquet 支持“重复级别”和“定义级别”来处理复杂的数据结构和数组。
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
相关资源
最近更新 更多