1616# limitations under the License.
1717################################################################################
1818
19- import itertools
20-
2119from java_based_implementation .java_gateway import get_gateway
2220from java_based_implementation .util .java_utils import to_j_catalog_context , check_batch_write
2321from paimon_python_api import (catalog , table , read_builder , table_scan , split , table_read ,
@@ -123,15 +121,15 @@ def __init__(self, j_table_read, j_row_type):
123121
124122 def create_reader (self , split : Split ):
125123 self ._j_bytes_reader .setSplit (split .to_j_split ())
126- batch_iterator = self . _batch_generator ()
127- # to init arrow schema
128- try :
129- first_batch = next ( batch_iterator )
130- except StopIteration :
131- return self . _empty_batch_reader ()
124+ # get schema
125+ if self . _arrow_schema is None :
126+ schema_bytes = self . _j_bytes_reader . serializeSchema ()
127+ schema_reader = RecordBatchStreamReader ( BufferReader ( schema_bytes ) )
128+ self . _arrow_schema = schema_reader . schema
129+ schema_reader . close ()
132130
133- batches = itertools . chain (( b for b in [ first_batch ]), batch_iterator )
134- return RecordBatchReader .from_batches (self ._arrow_schema , batches )
131+ batch_iterator = self . _batch_generator ( )
132+ return RecordBatchReader .from_batches (self ._arrow_schema , batch_iterator )
135133
136134 def _batch_generator (self ) -> Iterator [RecordBatch ]:
137135 while True :
@@ -140,17 +138,8 @@ def _batch_generator(self) -> Iterator[RecordBatch]:
140138 break
141139 else :
142140 stream_reader = RecordBatchStreamReader (BufferReader (next_bytes ))
143- if self ._arrow_schema is None :
144- self ._arrow_schema = stream_reader .schema
145141 yield from stream_reader
146142
147- def _empty_batch_reader (self ):
148- import pyarrow as pa
149- schema = pa .schema ([])
150- empty_batch = pa .RecordBatch .from_arrays ([], schema = schema )
151- empty_reader = pa .RecordBatchReader .from_batches (schema , [empty_batch ])
152- return empty_reader
153-
154143
155144class BatchWriteBuilder (write_builder .BatchWriteBuilder ):
156145
0 commit comments