def test_cython_row_coder(self): from pyflink.common import Row, RowKind field_count = 15 field_names = ['f{}'.format(i) for i in range(field_count)] row = Row(**{ field_names[i]: None if i % 2 == 0 else i for i in range(field_count) }) data = [row] python_field_coders = [ coder_impl.RowCoderImpl( [coder_impl.BigIntCoderImpl() for _ in range(field_count)], row._fields) ] cython_field_coders = [ coder_impl_fast.RowCoderImpl([ coder_impl_fast.BigIntCoderImpl() for _ in range(field_count) ], row._fields) ] row.set_row_kind(RowKind.INSERT) self.check_cython_coder(python_field_coders, cython_field_coders, data) row.set_row_kind(RowKind.UPDATE_BEFORE) self.check_cython_coder(python_field_coders, cython_field_coders, data) row.set_row_kind(RowKind.UPDATE_AFTER) self.check_cython_coder(python_field_coders, cython_field_coders, data) row.set_row_kind(RowKind.DELETE) self.check_cython_coder(python_field_coders, cython_field_coders, data)
def test_cython_array_coder(self): data = [[1, 2, 3, None]] python_field_coders = [coder_impl.ArrayCoderImpl(coder_impl.BigIntCoderImpl()) for _ in range(len(data))] cython_field_coders = [coder_impl_fast.ArrayCoderImpl(coder_impl_fast.BigIntCoderImpl()) for _ in range(len(data))] self.check_cython_coder(python_field_coders, cython_field_coders, [data])
def test_cython_row_coder(self): from pyflink.common import Row, RowKind field_count = 2 row = Row(*[None if i % 2 == 0 else i for i in range(field_count)]) data = [row] python_field_coders = [ coder_impl.RowCoderImpl( [coder_impl.BigIntCoderImpl() for _ in range(field_count)]) ] cython_field_coders = [ coder_impl_fast.RowCoderImpl([ coder_impl_fast.BigIntCoderImpl() for _ in range(field_count) ]) ] row.set_row_kind(RowKind.INSERT) self.check_cython_coder(python_field_coders, cython_field_coders, [data]) row.set_row_kind(RowKind.UPDATE_BEFORE) self.check_cython_coder(python_field_coders, cython_field_coders, [data]) row.set_row_kind(RowKind.UPDATE_AFTER) self.check_cython_coder(python_field_coders, cython_field_coders, [data]) row.set_row_kind(RowKind.DELETE) self.check_cython_coder(python_field_coders, cython_field_coders, [data])
def test_cython_bigint_coder(self): data = [1, 100, -100, -1000] python_field_coders = [ coder_impl.BigIntCoderImpl() for _ in range(len(data)) ] cython_field_coders = [ coder_impl_fast.BigIntCoderImpl() for _ in range(len(data)) ] self.check_cython_coder(python_field_coders, cython_field_coders, data)
def test_cython_map_coder(self): data = [{'flink': 1, 'pyflink': 2, 'coder': None}] python_field_coders = [coder_impl.MapCoderImpl(coder_impl.CharCoderImpl(), coder_impl.BigIntCoderImpl()) for _ in range(len(data))] cython_field_coders = [coder_impl_fast.MapCoderImpl(coder_impl_fast.CharCoderImpl(), coder_impl_fast.BigIntCoderImpl()) for _ in range(len(data))] self.check_cython_coder(python_field_coders, cython_field_coders, [data])
def test_cython_row_coder(self): from pyflink.table import Row field_count = 2 data = [Row(*[None if i % 2 == 0 else i for i in range(field_count)])] python_field_coders = [coder_impl.RowCoderImpl([coder_impl.BigIntCoderImpl() for _ in range(field_count)])] cython_field_coders = [coder_impl_fast.RowCoderImpl([coder_impl_fast.BigIntCoderImpl() for _ in range(field_count)])] self.check_cython_coder(python_field_coders, cython_field_coders, [data])
def test_cython_primitive_array_coder(self): data = [[1, 2, 3, 4]] python_field_coders = [ coder_impl.PrimitiveArrayCoderImpl(coder_impl.BigIntCoderImpl()) for _ in range(len(data)) ] cython_field_coders = [ coder_impl_fast.PrimitiveArrayCoderImpl( coder_impl_fast.BigIntCoderImpl()) for _ in range(len(data)) ] self.check_cython_coder(python_field_coders, cython_field_coders, data)
def test_cython_coder_with_wrong_result_type(self): from apache_beam.coders.coder_impl import create_OutputStream from pyflink.fn_execution.beam.beam_stream import BeamOutputStream data = ['1'] cython_field_coders = [ coder_impl_fast.BigIntCoderImpl() for _ in range(len(data)) ] cy_flatten_row_coder = coder_impl_fast.FlattenRowCoderImpl( cython_field_coders) beam_output_stream = create_OutputStream() output_stream = BeamOutputStream(beam_output_stream) with self.assertRaises(TypeError) as context: cy_flatten_row_coder.encode_to_stream(data, output_stream) self.assertIn('an integer is required', str(context.exception))
def get_impl(self): return coder_impl.BigIntCoderImpl()