in awsglue/dynamicframe.py [0:0]
def apply_mapping(self, mappings, case_sensitive = False, transformation_ctx = "", info = "", stageThreshold = 0, totalThreshold = 0):
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 = self.glue_ctx._jvm.scala.Tuple2
tup3 = self.glue_ctx._jvm.scala.Tuple3
tup4 = self.glue_ctx._jvm.scala.Tuple4
java_cls = self.glue_ctx._jvm.MappingSpec
if len(mapping_tup) == 2:
return java_cls.apply(tup2.apply(mapping_tup[0], mapping_tup[1]))
elif len(mapping_tup) == 3:
return java_cls.apply(tup3.apply(mapping_tup[0], mapping_tup[1], mapping_tup[2]))
elif len(mapping_tup) == 4:
return java_cls.apply(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_list = [ _to_java_mapping(m) for m in mappings ]
new_jdf = self._jdf.applyMapping(
self.glue_ctx._jvm.PythonUtils.toSeq(mappings_list),
case_sensitive,
transformation_ctx,
_call_site(self._sc, callsite(), info), long(stageThreshold), long(totalThreshold))
return DynamicFrame(new_jdf, self.glue_ctx, self.name)