I don't think th c++ stream Api supports repeated or nested fields so I
don't think this is possible unless you use the lower level APIs or go
through the Arrow bindings

On Monday, July 18, 2022, Kartik Thakore <[email protected]> wrote:

> Hello,
>
> I am working on the following schema:
>
> 1. Repeat
>
> std::shared_ptr<parquet::schema::GroupNode> GetSchema()
> {
> parquet::schema::NodeVector fields;
> {
> auto element = parquet::schema::PrimitiveNode::Make("string", parquet::
> Repetition::OPTIONAL,
> parquet::Type::BYTE_ARRAY, parquet::ConvertedType::UTF8);
> auto list = parquet::schema::GroupNode::Make("list", parquet::Repetition::
> REPEATED, {element});
> fields.push_back(
> parquet::schema::GroupNode::Make("path", parquet::Repetition::REQUIRED, {
> list}, parquet::ConvertedType::LIST));
>
> fields.push_back(
> parquet::schema::PrimitiveNode::Make(
> "vstr", parquet::Repetition::OPTIONAL, parquet::Type::BYTE_ARRAY, parquet
> ::ConvertedType::UTF8));
> fields.push_back(
> parquet::schema::PrimitiveNode::Make(
> "vint", parquet::Repetition::OPTIONAL, parquet::Type::INT64, parquet::
> ConvertedType::NONE));
> fields.push_back(
> parquet::schema::PrimitiveNode::Make(
> "vfloat", parquet::Repetition::OPTIONAL, parquet::Type::DOUBLE, parquet::
> ConvertedType::NONE));
> fields.push_back(
> parquet::schema::PrimitiveNode::Make(
> "vbool", parquet::Repetition::OPTIONAL, parquet::Type::BOOLEAN, parquet::
> ConvertedType::NONE));
> }
>
> return std::static_pointer_cast<parquet::schema::GroupNode>(
> parquet::schema::GroupNode::Make("schema", parquet::Repetition::REQUIRED,
> fields));
> }
>
>
> ...
>
> parquet::schema::NodeVector columnNames_{};
>
> std::shared_ptr<parquet::schema::GroupNode> schema = GetSchema();
>
> this->pq_oss_stream = parquet::StreamWriter{
> parquet::ParquetFileWriter::Open(outfile, schema, builder.build())};
>
> ...
>
> vector<string> current_path ...; //
>
> this->pq_oss_stream << current_path << optional<uint32_t>{{}} << optional<
> float>{{}} << optional<bool>{{}} << parquet::EndRow;
>
>
> How do I write the current_path to pq_oss_stream?
>
> --
> *Kartik Thakore*
>

Reply via email to