I have table with map in it. I want to make 2 separate columns out of that map - 1. keys column 2. values column.
input.show();
+---------------------+--------------------+--------------+----------------+---------------+--------------+-----------------------+
|addedSkuWithTimestamp| fbaSKUAdditions|fbaSKURemovals| merchantId|mfnSKUAdditions|mfnSKURemovals|removedSkuWithTimestamp|
+---------------------+--------------------+--------------+----------------+---------------+--------------+-----------------------+
| [Test1 -> 1234567...|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []| A4QA5OYD4Y45F| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []|ANOTHER_MERCHANT| []| null| null|
| null|[CLAM_SUNGLASS_CA...| []|ANOTHER_MERCHANT| []| null| null|
+---------------------+--------------------+--------------+----------------+---------------+--------------+-----------------------+
But I want output as
test1 123456789
Test2 123456780
How to get 2 different columns (key column and value column) from map?
Dataset<Row> removed_skus = input
.withColumn("sku", functions.explode(input.col("removedSkuWithTimestamp")))
.withColumn("skuType", functions.lit("MFN"))
.select(input.col("merchantId").alias("merchant_id"), new Column("sku").,
new Column("skuType"))
.distinct()
.groupBy("merchant_id")
.agg(functions.collect_list("sku").alias("removedSkus"));