Databricks写Json文件太慢

问题描述

我有一个简单的scala代码段,用于读取/写入总计10GB的json文件(带有来自存储帐户的挂载目录)->花了1.7个小时,几乎所有时间都写在json文件行中。

集群设置:

  • Azure Databricks DBR 7.3 LTS,spark 3.0.1,scala 2.12
  • 11个工作程序+一个Standard_E4as_v4类型的驱动程序(每个驱动程序具有32.0 GB内存,4个内核)
  1. 为什么写作太慢?
  2. 不是跨分区/工作人员并行地进行写作吗?
  3. 如何加快写作速度或整个过程?

安装目录的代码

val containerName = "containerName"
val storageAccountName = "storageAccountName"
val sas = "sastoken"
val config = "fs.azure.sas." + containerName+ "." + storageAccountName + ".blob.core.windows.net"

dbutils.fs.mount(
  source = "wasbs://containerName@storageAccountName.blob.core.windows.net/",mountPoint = "/mnt/myfile",extraConfigs = Map(config -> sas))

用于读取/写入json文件代码

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import spark.implicits._

val jsonDF = spark.read.json("/mnt/myfile")
jsonDF.write.json("/mnt/myfile/spark_output_test")

解决方法

通过使用“我会说”更好的Spark API来解决,例如 阅读-> spark.read.format(“ json”)。load(“ path”) 写-> res.write.format(“ parquet”)。save(“ path) 并以镶木地板格式书写,因为它经过压缩并针对火花进行了优化