error logs I'm getting error while running auto created script in aws glue.As data is struct format and storing/alter in same table that created previously.
py4j.protocol.Py4JJavaError: An error occurred while calling o133.pyWriteDynamicFrame. : com.amazonaws.services.glue.util.SchemaException: Cannot write struct field tags to CSV
Please guide me where i made mistake
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
## @type: DataSource
## @args: [database = "experimentdb", table_name = "datalakexperiment",
transformation_ctx =
"datasource0"]
## @return: datasource0
## @inputs: []
datasource0 = glueContext.create_dynamic_frame.from_catalog(database =
"experimentdb", table_name =
"datalakexperiment", transformation_ctx = "datasource0")
## @type: ApplyMapping
## @args: [mapping = [("id", "string", "id", "string"), ("identifier",
"string", "identifier",
"string"), ("session_count", "long", "session_count", "long"), ("language",
"string", "language",
"string"), ("timezone", "long", "timezone", "long"), ("game_version",
"string", "game_version",
"string"), ("device_os", "string", "device_os", "string"), ("device_type",
"long", "device_type",
"long"), ("device_model", "string", "device_model", "string"), ("ad_id",
"string", "ad_id",
"string"), ("tags.phone_number", "string", "tags.phone_number", "string"),
("tags.real_name",
"string", "tags.real_name", "string"), ("tags.email", "string",
"tags.email",
"string"),
("tags.onboardingStatus", "string", "tags.onboardingStatus", "string"),
("tags.dfuStatus", "string",
"tags.dfuStatus", "string"), ("tags.activityStatus", "string",
"tags.activityStatus", "string"),
("tags.lastOperationPerformed", "string", "tags.lastOperationPerformed",
"string"), ("last_active",
"string", "last_active", "string"), ("playtime", "long", "playtime",
"long"),
("amount_spent",
"double", "amount_spent", "double"), ("created_at", "string", "created_at",
"string"),
("invalid_identifier", "string", "invalid_identifier", "string"),
("badge_count", "long",
"badge_count", "long")], transformation_ctx = "applymapping1"]
## @return: applymapping1
## @inputs: [frame = datasource0]
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("id",
"string", "id", "string"),
("identifier", "string", "identifier", "string"), ("session_count", "long",
"session_count", "long"),
("language", "string", "language", "string"), ("timezone", "long",
"timezone", "long"),
("game_version", "string", "game_version", "string"), ("device_os",
"string",
"device_os", "string"),
("device_type", "long", "device_type", "long"), ("device_model", "string",
"device_model", "string"),
("ad_id", "string", "ad_id", "string"), ("tags.phone_number", "string",
"tags.phone_number",
"string"), ("tags.real_name", "string", "tags.real_name", "string"),
("tags.email", "string",
"tags.email", "string"), ("tags.onboardingStatus", "string",
"tags.onboardingStatus", "string"),
("tags.dfuStatus", "string", "tags.dfuStatus", "string"),
("tags.activityStatus", "string",
"tags.activityStatus", "string"), ("tags.lastOperationPerformed", "string",
"tags.lastOperationPerformed", "string"), ("last_active", "string",
"last_active", "string"),
("playtime", "long", "playtime", "long"), ("amount_spent", "double",
"amount_spent", "double"),
("created_at", "string", "created_at", "string"), ("invalid_identifier",
"string",
"invalid_identifier",
"string"), ("badge_count", "long", "badge_count", "long")],
transformation_ctx = "applymapping1")
## @type: SelectFields
## @args: [paths = ["id", "identifier", "session_count", "language",
"timezone", "game_version",
"device_os", "device_type", "device_model", "ad_id", "tags", "last_active",
"playtime",
"amount_spent", "created_at", "invalid_identifier", "badge_count"],
transformation_ctx =
"selectfields2"]
## @return: selectfields2
## @inputs: [frame = applymapping1]
selectfields2 = SelectFields.apply(frame = applymapping1, paths = ["id",
"identifier",
"session_count", "language", "timezone", "game_version", "device_os",
"device_type", "device_model",
"ad_id", "tags", "last_active", "playtime", "amount_spent", "created_at",
"invalid_identifier",
"badge_count"], transformation_ctx = "selectfields2")
## @type: ResolveChoice
## @args: [choice = "MATCH_CATALOG", database = "experimentdb", table_name
=
"datalakexperiment",
transformation_ctx = "resolvechoice3"]
## @return: resolvechoice3
## @inputs: [frame = selectfields2]
resolvechoice3 = ResolveChoice.apply(frame = selectfields2, choice =
"MATCH_CATALOG", database =
"experimentdb", table_name = "datalakexperiment", transformation_ctx =
"resolvechoice3")
## @type: DataSink
## @args: [database = "experimentdb", table_name = "datalakexperiment",
transformation_ctx =
"datasink4"]
## @return: datasink4
## @inputs: [frame = resolvechoice3]
datasink4 = glueContext.write_dynamic_frame.from_catalog(frame =
resolvechoice3, database =
"experimentdb", table_name = "datalakexperiment", transformation_ctx =
"datasink4")
job.commit()