записать файл паркета из файла protobuf в golang

У меня есть такой прото-файл:

      syntax = "proto3";
option go_package="./messages";

enum MessageType {
    EventType = 0;
}

message Data {
     uint32 id = 1;
     MessageType event = 2;
     string website = 3;
     float value = 4;
}

Этот прото-файл генерирует файл go со структурой данных:

      type Data struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    Id              uint32      `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
    Event           MessageType `protobuf:"varint,2,opt,name=event,proto3,enum=MessageType" json:"event,omitempty"`
    Website         string      `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty"`
    Value           float32     `protobuf:"fixed32,4,opt,name=value,proto3" json:"value,omitempty"`
}

Теперь я хочу инициализировать новый писатель паркета:

      writer.NewParquetWriter(fw, new (Data), Concurrency)

Проблема в том, что у меня нет паркетных бирок, поэтому паркетщик не справился.

Как я могу изменить сгенерированную структуру на паркетные теги:

      type Data struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    Id              uint32      `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" parquet:"name=Id, type=INT32"`
    Event           MessageType `protobuf:"varint,2,opt,name=event,proto3,enum=MessageType" json:"event,omitempty"  parquet:"name=event, type=MessageType`
    Website         string      `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty" parquet:"name=website, type=BYTE_ARRAY, convertedtype=UTF8"`
    Value           float32     `protobuf:"fixed32,4,opt,name=value,proto3" json:"value,omitempty"  parquet:"name=value, type=FLOAT"`
}

0 ответов

Другие вопросы по тегам