示例#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 check_coder(self, coder, *values):
     for v in values:
         if isinstance(v, float):
             from pyflink.table.tests.test_udf import float_equal
             assert float_equal(v, coder.decode(coder.encode(v)), 1e-6)
         else:
             self.assertEqual(v, coder.decode(coder.encode(v)))
示例#3
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.fast_coder_impl import InputStreamAndFunctionWrapper
     py_flatten_row_coder = coder_impl.FlattenRowCoderImpl(
         python_field_coders)
     internal = py_flatten_row_coder.encode(data)
     input_stream = create_InputStream(internal)
     output_stream = create_OutputStream()
     cy_flatten_row_coder = fast_coder_impl.FlattenRowCoderImpl(
         cython_field_coders)
     value = cy_flatten_row_coder.decode_from_stream(input_stream, False)
     wrapper_func_input_element = InputStreamAndFunctionWrapper(
         lambda v: [v[i] for i in range(len(v))], value)
     cy_flatten_row_coder.encode_to_stream(wrapper_func_input_element,
                                           output_stream, False)
     generator_result = py_flatten_row_coder.decode_from_stream(
         create_InputStream(output_stream.get()), False)
     result = []
     for item in generator_result:
         result.append(item)
     try:
         self.assertEqual(result, data)
     except AssertionError:
         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])