first.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/apache/arrow/go/arrow"
  5. "github.com/apache/arrow/go/arrow/array"
  6. "github.com/apache/arrow/go/arrow/memory"
  7. )
  8. func main() {
  9. mem := memory.NewGoAllocator()
  10. schema := arrow.NewSchema(
  11. []arrow.Field{
  12. arrow.Field{Name: "f1-i32", Type: arrow.PrimitiveTypes.Int32},
  13. arrow.Field{Name: "f2-f64", Type: arrow.PrimitiveTypes.Float64},
  14. },
  15. nil, // no metadata
  16. )
  17. b := array.NewRecordBuilder(mem, schema)
  18. defer b.Release()
  19. b.Field(0).(*array.Int32Builder).AppendValues(
  20. []int32{1, 2, 3, 4, 5, 6},
  21. nil,
  22. )
  23. b.Field(0).(*array.Int32Builder).AppendValues(
  24. []int32{7, 8, 9, 10},
  25. []bool{true, true, false, true},
  26. )
  27. b.Field(1).(*array.Float64Builder).AppendValues(
  28. []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
  29. nil,
  30. )
  31. rec1 := b.NewRecord()
  32. defer rec1.Release()
  33. b.Field(0).(*array.Int32Builder).AppendValues([]int32{
  34. 11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
  35. nil,
  36. )
  37. b.Field(1).(*array.Float64Builder).AppendValues([]float64{
  38. 11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
  39. nil,
  40. )
  41. rec2 := b.NewRecord()
  42. defer rec2.Release()
  43. tbl := array.NewTableFromRecords(schema, []array.Record{rec1, rec2})
  44. defer tbl.Release()
  45. tr := array.NewTableReader(tbl, 5)
  46. defer tr.Release()
  47. n := 0
  48. for tr.Next() {
  49. rec := tr.Record()
  50. for i, col := range rec.Columns() {
  51. fmt.Printf("rec[%d][%q]: %v\n", n, rec.ColumnName(i), col)
  52. }
  53. n++
  54. }
  55. }