Go中写入镶木地板文件的时间戳格式是什么

时间:2019-01-16 18:55:03

标签: go parquet amazon-athena

我正在尝试在Parquet文件中编写Go结构并将其上传到S3。我为结构中的timestamp参数指定什么格式和类型,以便雅典娜在从实木复合地板文件中读取时显示正确的时间戳。

type example struct {
     ID              int64  `parquet:"name=id, type=INT64"`
     CreatedAt       int64  `parquet:"name=created_at,type=TIMESTAMP_MILLIS"`
}

ex := example{}
ex.ID = int64(10)
ex.CreatedAt = time.Now().Unix()

fw, err := ParquetFile.NewLocalFileWriter("new.parquet")
pw, err := ParquetWriter.NewParquetWriter(fw, new(example), 1)
pw.Write(ex)

Upload the file new.parquet to S3

参考-https://github.com/xitongsys/parquet-go。我在雅典娜创建了一个具有int和timestamp字段的表,并尝试查询该表。日期显示为-1970-01-18 21:54:23.751。 没有哪个与当前时间戳匹配。

1 个答案:

答案 0 :(得分:1)

例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    type example struct {
        CreatedAt int64 `parquet:"name=created_at,type=TIMESTAMP_MILLIS"`
    }

    ex := example{}
    ex.CreatedAt = time.Now().UnixNano() / int64(time.Millisecond)
    fmt.Println(ex.CreatedAt)
}

游乐场:https://play.golang.org/p/ePOlUKiT6fD

输出:

1257894000000