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

王林
Freigeben: 2024-02-10 19:10:08
nach vorne
764 Leute haben es durchsucht

将 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"`
}
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!