Heim  >  Artikel  >  Backend-Entwicklung  >  Konvertieren Sie die Parkettdatei in eine Golang-Struktur mit verschachtelten Elementen

Konvertieren Sie die Parkettdatei in eine Golang-Struktur mit verschachtelten Elementen

王林
王林nach vorne
2024-02-10 19:10:08769Durchsuche

将 parquet 文件转换为带有嵌套元素的 Golang 结构

PHP-Editor Xinyi stellt vor, wie man Parkettdateien in Golang-Strukturen mit verschachtelten Elementen umwandelt. Parquet ist ein effizientes spaltenorientiertes Speicherformat und Golang ist eine leistungsstarke Programmiersprache. Durch die Kombination dieser beiden Formate können wir große Datenmengen besser verarbeiten und analysieren. Durch die Verwendung geeigneter Bibliotheken und Techniken können wir Parquet-Dateien problemlos in Golang-Strukturen analysieren und verschachtelte Elemente für eine bessere Organisation und Manipulation von Daten verarbeiten. In diesem Artikel werden die Implementierungsschritte und Vorsichtsmaßnahmen im Detail vorgestellt, um den Lesern den Einstieg zu erleichtern.

Frageninhalt

Ich versuche, eine Parquet-Datei mit verschachtelten Arrays/Strukturen in go mithilfe der xitongsys/parquet-go-Bibliothek zu lesen. Die Listendaten werden nicht gelesen und es werden keine Werte angezeigt. Unten ist meine Struktur in Golang

type Play struct {
    SID            string   `parquet:"name=si, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY, repetitiontype=OPTIONAL" json:"si,omitempty"`
    TimeStamp      int      `parquet:"name=ts, type=INT64, repetitiontype=OPTIONAL" json:"ts,omitempty"`
    SingleID       int      `parquet:"name=sg, type=INT64, repetitiontype=OPTIONAL" json:"sg,omitempty"`
    PID            int      `parquet:"name=playid, type=INT64, repetitiontype=OPTIONAL" json:"playid,omitempty"`
    StartTimeStamp string   `parquet:"name=startts, type=BYTE_ARRAY,repetitiontype=OPTIONAL"`
    Price          []Price1 `parquet:"name=price, type=LIST, repetitiontype=REQUIRED" json:"price,omitempty"`
}

type Price1 struct {
    CurrID int    `parquet:"name=currId, type=INT64, repetitiontype=REQUIRED" json:"currId,omitempty"`
    LPTag  string `parquet:"name=lptag, type=BYTE_ARRAY,convertedtype=UTF8, repetitiontype=REQUIRED" json:"lptag,omitempty"`
    LPrice Money  `parquet:"name=lpmoney, type=STRUCT" json:"lpmoney,omitempty"`
}

type Money struct {
    AdmCurrCode  string `parquet:"name=admCC, type=BYTE_ARRAY, repetitiontype=OPTIONAL" json:"admCC,omitempty"`
    AdmCurrValue string `parquet:"name=admCV, type=BYTE_ARRAY" json:"admCV,omitempty"`
}

currid und lptag sind leer, obwohl die Parkettdatei gültige Werte hat

Problemumgehung

Ich habe das github.com/segmentio/parquet-go包可以正确读取文件。您需要坚持使用 github.com/xitongsys/parquet-go-Paket gefunden?

package main

import (
    "fmt"

    "github.com/segmentio/parquet-go"
)

type Play struct {
    SID            string  `parquet:"si"`
    TimeStamp      int     `parquet:"ts"`
    SingleID       int     `parquet:"sg"`
    PID            int     `parquet:"playid"`
    StartTimeStamp string  `parquet:"startts"`
    Price          []Price `parquet:"price,list"`
}

type Price struct {
    CurrID int    `parquet:"currId"`
    LPTag  string `parquet:"lptag"`
    LPrice Money  `parquet:"lpmoney"`
}

type Money struct {
    AdmCurrCode  string `parquet:"admCC"`
    AdmCurrValue string `parquet:"admCV"`
}

func main() {
    rows, err := parquet.ReadFile[Play]("s3.parquet")
    if err != nil {
        panic(err)
    }

    for _, c := range rows {
        fmt.Printf("%+v\n", c)
    }
}

Das obige ist der detaillierte Inhalt vonKonvertieren Sie die Parkettdatei in eine Golang-Struktur mit verschachtelten Elementen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen