您的位置:首页 > 游戏 > 游戏 > parquet-go的CSVWriter

parquet-go的CSVWriter

2024/10/17 2:54:18 来源:https://blog.csdn.net/shulu/article/details/140372346  浏览:    关键词:parquet-go的CSVWriter

parquet-go的CSVWriter

代码:

package mainimport ("github.com/xitongsys/parquet-go-source/local""github.com/xitongsys/parquet-go/writer""log"
)func main() {var err errormd := []string{"name=Name, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN","name=address, type=LIST, valuetype=BYTE_ARRAY, valueconvertedtype=UTF8",}//writefw, err := local.NewLocalFileWriter("csv.parquet")if err != nil {log.Println("Can't open file", err)return}pw, err := writer.NewCSVWriter(md, fw, 4)if err != nil {log.Println("Can't create csv writer", err)return}num := 10for i := 0; i < num; i++ {data2 := []interface{}{"Student Name",[]string{"string1", "string2", "string3"},}if err = pw.Write(data2); err != nil {log.Println("Write error", err)}}if err = pw.WriteStop(); err != nil {log.Println("WriteStop error", err)}log.Println("Write Finished")fw.Close()}

执行这段代码会报错:

pw, err := writer.NewCSVWriter(md, fw, 4)

报错如下:

failed to create schema from tag map: type LIST: not a valid Type string

分析原因后是CSVWriter不支持LIST。

具体报错在这里:

if t, err := parquet.TypeFromString(info.Type); err == nil {schema.Type = &t} else {return nil, fmt.Errorf("type " + info.Type + ": " + err.Error())
}

进入parquet.TypeFromString()

func TypeFromString(s string) (Type, error) {switch s {case "BOOLEAN":return Type_BOOLEAN, nilcase "INT32":return Type_INT32, nilcase "INT64":return Type_INT64, nilcase "INT96":return Type_INT96, nilcase "FLOAT":return Type_FLOAT, nilcase "DOUBLE":return Type_DOUBLE, nilcase "BYTE_ARRAY":return Type_BYTE_ARRAY, nilcase "FIXED_LEN_BYTE_ARRAY":return Type_FIXED_LEN_BYTE_ARRAY, nil}return Type(0), fmt.Errorf("not a valid Type string")
}

可以看到这里并没有LIST,也没有MAP。只支持如上一些类型。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com