def _from_elements(self, elements, schema): """ Creates a table from a collection of elements. :param elements: The elements to create a table from. :return: The result :class:`Table`. """ # serializes to a file, and we read the file in java temp_file = tempfile.NamedTemporaryFile(delete=False, dir=tempfile.mkdtemp()) serializer = BatchedSerializer(self._serializer) try: try: serializer.dump_to_stream(elements, temp_file) finally: temp_file.close() row_type_info = _to_java_type(schema) execution_config = self._get_execution_config( temp_file.name, schema) gateway = get_gateway() j_objs = gateway.jvm.PythonBridgeUtils.readPythonObjects( temp_file.name, True) j_input_format = gateway.jvm.PythonTableUtils.getInputFormat( j_objs, row_type_info, execution_config) j_table_source = gateway.jvm.PythonInputFormatTableSource( j_input_format, row_type_info) return Table(self._j_tenv.fromTableSource(j_table_source)) finally: os.unlink(temp_file.name)
def test_java_batch_deserializer(self): temp_file = tempfile.NamedTemporaryFile(delete=False, dir=tempfile.mkdtemp()) serializer = BatchedSerializer(PickleSerializer(), 2) data = [(1, 2), (3, 4), (5, 6), (7, 8)] try: serializer.dump_to_stream(data, temp_file) finally: temp_file.close() gateway = get_gateway() result = [tuple(int_pair) for int_pair in list(gateway.jvm.PythonBridgeUtils.readPythonObjects(temp_file.name, True))] self.assertEqual(result, [(1, 2), (3, 4), (5, 6), (7, 8)])
def _from_elements(self, elements, schema): """ Creates a table from a collection of elements. :param elements: The elements to create a table from. :return: The result :class:`Table`. """ # serializes to a file, and we read the file in java temp_file = tempfile.NamedTemporaryFile(delete=False, dir=tempfile.mkdtemp()) serializer = BatchedSerializer(self._serializer) try: try: serializer.dump_to_stream(elements, temp_file) finally: temp_file.close() return self._from_file(temp_file.name, schema) finally: os.unlink(temp_file.name)