1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package pqarrow_test
18
19 import (
20 "bytes"
21 "strings"
22 "testing"
23
24 "github.com/apache/arrow/go/v15/arrow"
25 "github.com/apache/arrow/go/v15/arrow/array"
26 "github.com/apache/arrow/go/v15/arrow/memory"
27 "github.com/apache/arrow/go/v15/parquet"
28 "github.com/apache/arrow/go/v15/parquet/pqarrow"
29 "github.com/stretchr/testify/assert"
30 "github.com/stretchr/testify/require"
31 )
32
33 func TestFileWriterRowGroupNumRows(t *testing.T) {
34 schema := arrow.NewSchema([]arrow.Field{
35 {Name: "one", Nullable: true, Type: arrow.PrimitiveTypes.Float64},
36 {Name: "two", Nullable: true, Type: arrow.PrimitiveTypes.Float64},
37 }, nil)
38
39 data := `[
40 {"one": 1, "two": 2},
41 {"one": 1, "two": null},
42 {"one": null, "two": 2},
43 {"one": null, "two": null}
44 ]`
45 record, _, err := array.RecordFromJSON(memory.DefaultAllocator, schema, strings.NewReader(data))
46 require.NoError(t, err)
47
48 output := &bytes.Buffer{}
49 writerProps := parquet.NewWriterProperties(parquet.WithMaxRowGroupLength(100))
50 writer, err := pqarrow.NewFileWriter(schema, output, writerProps, pqarrow.DefaultWriterProps())
51 require.NoError(t, err)
52
53 require.NoError(t, writer.Write(record))
54 numRows, err := writer.RowGroupNumRows()
55 require.NoError(t, err)
56 assert.Equal(t, 4, numRows)
57 require.NoError(t, writer.Close())
58 }
59
60 func TestFileWriterNumRows(t *testing.T) {
61 schema := arrow.NewSchema([]arrow.Field{
62 {Name: "one", Nullable: true, Type: arrow.PrimitiveTypes.Float64},
63 {Name: "two", Nullable: true, Type: arrow.PrimitiveTypes.Float64},
64 }, nil)
65
66 data := `[
67 {"one": 1, "two": 2},
68 {"one": 1, "two": null},
69 {"one": null, "two": 2},
70 {"one": null, "two": null}
71 ]`
72 record, _, err := array.RecordFromJSON(memory.DefaultAllocator, schema, strings.NewReader(data))
73 require.NoError(t, err)
74
75 maxRowGroupLength := 2
76
77 output := &bytes.Buffer{}
78 writerProps := parquet.NewWriterProperties(parquet.WithMaxRowGroupLength(int64(maxRowGroupLength)))
79 writer, err := pqarrow.NewFileWriter(schema, output, writerProps, pqarrow.DefaultWriterProps())
80 require.NoError(t, err)
81
82 require.NoError(t, writer.Write(record))
83 rowGroupNumRows, err := writer.RowGroupNumRows()
84 require.NoError(t, err)
85 assert.Equal(t, maxRowGroupLength, rowGroupNumRows)
86
87 require.NoError(t, writer.Close())
88 assert.Equal(t, 4, writer.NumRows())
89 }
90
View as plain text