code: def apply_in_arrow_with_key_func(key_column):
      def func(key, left, right):
          assert isinstance(key, tuple)
          assert all(isinstance(scalar, pa.Scalar) for scalar in key)
          if key_column:
              assert all(
                  (pc.divide(k, pa.scalar(4)).cast(pa.int32()),) == key
                  for table in [left, right]
                  for k in table.column(key_column)
              )
          return CogroupedMapInArrowTestsMixin.apply_in_arrow_func(
              left, right
          )
  
      return func
  
imports: import os
  import time
  import unittest
  from pyspark.errors import PythonException
  from pyspark.sql import Row
  from pyspark.sql.functions import col
  from pyspark.testing.sqlutils import ReusedSQLTestCase, have_pyarrow, pyarrow_requirement_message
  from pyspark.testing.utils import QuietTest
label_desc: Use image node_id 5 for calling the CogroupedMapInArrowTestsMixin obj's underlying member method code with example usage: obj.apply_in_arrow_with_key_func(key_column) and returns: func, CogroupedMapInArrowTestsMixin