У нас есть следующий код:
val sparkSession = SparkSession.builder
.master("local")
.appName("example")
.getOrCreate()
val data = Seq(
Row(1, "a","b","c","d"),
Row(5, "z","b","c","d")
)
val schema = StructType(
List(
StructField("id", IntegerType, true),
StructField("f2", StringType, true),
StructField("f3", StringType, true),
StructField("f4", StringType, true),
StructField("f5", StringType, true)
)
)
val df1 = sparkSession.createDataFrame(
sparkSession.sparkContext.parallelize(data),
schema
)
Цель - записать этот фрейм данных в массив JSON:
[{"id":1,"f2":"a","f3":"b","f4":"c","f5":"d"},
{"id":5,"f2":"z","f3":"b","f4":"c","f5":"d"}]
Итак, нам нужны эти две квадратные скобки, но размер фрейма данных превышает 50 ГБпоэтому решение df1.toJSON.collect.mkString ("[", ",", "]") недопустимо. Есть ли способ решить эту проблему с помощью Spark с хорошей производительностью?
Заранее спасибо