当前位置: 首页 > news >正文

一个parquet-go例子

一个parquet-go例子

使用go读写parquet,使用到了框架github.com/xitongsys/parquet-go

代码:

package mainimport ("log""time""github.com/xitongsys/parquet-go-source/local""github.com/xitongsys/parquet-go/parquet""github.com/xitongsys/parquet-go/reader""github.com/xitongsys/parquet-go/writer"
)type Student struct {Name    string  `parquet:"name=name, type=BYTE_ARRAY, convertedtype=UTF8, encoding=PLAIN_DICTIONARY"`Age     int32   `parquet:"name=age, type=INT32, encoding=PLAIN"`Id      int64   `parquet:"name=id, type=INT64"`Weight  float32 `parquet:"name=weight, type=FLOAT"`Sex     bool    `parquet:"name=sex, type=BOOLEAN"`Day     int32   `parquet:"name=day, type=INT32, convertedtype=DATE"`Ignored int32   //without parquet tag and won't write
}func main() {var err errorfw, err := local.NewLocalFileWriter("flat.parquet")if err != nil {log.Println("Can't create local file", err)return}//writepw, err := writer.NewParquetWriter(fw, new(Student), 4)if err != nil {log.Println("Can't create parquet writer", err)return}pw.RowGroupSize = 128 * 1024 * 1024 //128Mpw.PageSize = 8 * 1024              //8Kpw.CompressionType = parquet.CompressionCodec_SNAPPYnum := 100for i := 0; i < num; i++ {stu := Student{Name:   "StudentName",Age:    int32(20 + i%5),Id:     int64(i),Weight: float32(50.0 + float32(i)*0.1),Sex:    bool(i%2 == 0),Day:    int32(time.Now().Unix() / 3600 / 24),}if err = pw.Write(stu); err != nil {log.Println("Write error", err)}}if err = pw.WriteStop(); err != nil {log.Println("WriteStop error", err)return}log.Println("Write Finished")fw.Close()///readfr, err := local.NewLocalFileReader("flat.parquet")if err != nil {log.Println("Can't open file")return}pr, err := reader.NewParquetReader(fr, new(Student), 4)if err != nil {log.Println("Can't create parquet reader", err)return}num = int(pr.GetNumRows())for i := 0; i < num/10; i++ {if i%2 == 0 {pr.SkipRows(10) //skip 10 rowscontinue}stus := make([]Student, 10) //read 10 rowsif err = pr.Read(&stus); err != nil {log.Println("Read error", err)}log.Println(stus)}pr.ReadStop()fr.Close()}

代码示例展示了如何使用parquet-go库在Go语言中写入和读取Parquet文件。

http://www.lryc.cn/news/394876.html

相关文章:

  • 扩散模型笔记
  • 上海-LM科技(面经)
  • 用 Echarts 画折线图
  • C++的map / multimap容器
  • 双向链表 -- 详细理解和实现
  • WebGIS面试题
  • 代码随想录算法训练营:21/60
  • 数据结构——二叉树之c语言实现堆与堆排序
  • #数据结构 链表
  • 单片机软件架构连载(4)-结构体
  • 工厂方法模式在金融业务中的应用及其框架实现
  • python库(6):Pygments库
  • 金斗云 HKMP智慧商业软件 任意用户创建漏洞复现
  • 前端JS特效第24集:jquery css3实现瀑布流照片墙特效
  • 区块链论文速读A会-ISSTA 2023(2/2)如何检测DeFi协议中的价格操纵漏洞
  • 权力之望怎么下载客户端 权力之望一键下载
  • Oracle PL/SQL 循环批量执行存储过程
  • kafka 生产者
  • Powershell 获取电脑保存的所有wifi密码
  • golang结合neo4j实现权限功能设计
  • java 参数传递(尤其注意参数是对象的情况)
  • 拼音字符串相似度
  • 如何创建一个基本的Mojolicious Web应用:探索Perl的现代Web框架
  • FPGA/数字IC复习八股
  • Android 简单快速实现 下弧形刻度尺(滑动事件)
  • 【Go】常见的变量与常量
  • Qt使用sqlite数据库及项目实战
  • 开源模型应用落地-FastAPI-助力模型交互-进阶篇(一)
  • 精准选择广告工具,提升推广效果
  • Swagger的原理及应用详解(六)