Пример #1
0
 def check_cython_coder(self, python_field_coders, cython_field_coders,
                        data):
     from apache_beam.coders.coder_impl import create_InputStream, create_OutputStream
     from pyflink.fn_execution.beam.beam_stream import BeamInputStream, BeamOutputStream
     py_flatten_row_coder = coder_impl.FlattenRowCoderImpl(
         python_field_coders)
     internal = py_flatten_row_coder.encode(data)
     beam_input_stream = create_InputStream(internal)
     input_stream = BeamInputStream(beam_input_stream,
                                    beam_input_stream.size())
     beam_output_stream = create_OutputStream()
     cy_flatten_row_coder = coder_impl_fast.FlattenRowCoderImpl(
         cython_field_coders)
     value = cy_flatten_row_coder.decode_from_stream(input_stream)
     output_stream = BeamOutputStream(beam_output_stream)
     cy_flatten_row_coder.encode_to_stream(value, output_stream)
     output_stream.flush()
     generator_result = py_flatten_row_coder.decode_from_stream(
         create_InputStream(beam_output_stream.get()), False)
     result = []
     for item in generator_result:
         result.append(item)
     try:
         self.assertEqual(result, [data])
     except AssertionError:
         data = [data]
         self.assertEqual(len(result), len(data))
         self.assertEqual(len(result[0]), len(data[0]))
         for i in range(len(data[0])):
             if isinstance(data[0][i], float):
                 from pyflink.table.tests.test_udf import float_equal
                 assert float_equal(data[0][i], result[0][i], 1e-6)
             else:
                 self.assertEqual(data[0][i], result[0][i])
Пример #2
0
 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))
Пример #3
0
 def get_impl(self):
     return coder_impl.FlattenRowCoderImpl([c.get_impl() for c in self._field_coders])