in awsglue/dataframe_transforms/apply_mapping.py [0:0]
def apply(frame, mappings):
jvm = frame.sql_ctx._jvm
def _to_java_mapping(mapping_tup):
if not isinstance(mapping_tup, tuple):
raise TypeError("Mapping must be specified as a tuple. Got " +
mapping_tup)
tup2 = jvm.scala.Tuple2
tup3 = jvm.scala.Tuple3
tup4 = jvm.scala.Tuple4
if len(mapping_tup) == 2:
return tup2.apply(mapping_tup[0], mapping_tup[1])
elif len(mapping_tup) == 3:
return tup3.apply(mapping_tup[0], mapping_tup[1], mapping_tup[2])
elif len(mapping_tup) == 4:
return tup4.apply(mapping_tup[0], mapping_tup[1], mapping_tup[2], mapping_tup[3])
else:
raise ValueError("Mapping tuple must be of length 2, 3, or 4"
"Got tuple of length " + str(len(mapping_tup)))
if isinstance(mappings, tuple):
mappings = [mappings]
mappings_seq = jvm.PythonUtils.toSeq([_to_java_mapping(m) for m in mappings])
java_import(jvm, "com.amazonaws.services.glue.dataframeTransforms.ApplyMapping")
return DataFrame(jvm.ApplyMapping.apply(frame._jdf, mappings_seq), frame.sql_ctx)