Вы можете использовать метод split после некоторой «предварительной обработки»
val col_names = Seq("item", "item_codes")
val data = Seq(("loose fit long sleeve swim shirt women", """["2237741011","1046622","1040660","7147440011","7141123011"]"""))
val df = spark.createDataFrame(data).toDF(col_names: _*)
// chop off first 2 and last 2 character and split at ","
df.withColumn("item_codes", split(expr("substring(item_codes, 3, length(item_codes)-4)"), """","""")).printSchema
Если ваш формат может измениться, вы можете быть более гибкими, используя регулярное выражение, так как leo предлагает отключить все, что не является цифрой или,
и разделить на ,