小编roo*_*ign的帖子

Spark.sql.files.maxPartitionBytes 不限制写入分区的最大大小

我正在尝试将镶木地板数据从另一个 s3 存储桶复制到我的 s3 存储桶。我想将每个分区的大小限制为最大 128 MB。我认为默认情况下,spark.sql.files.maxPartitionBytes会设置为 128 MB,但是当我在复制后查看 s3 中的分区文件时,我看到单个分区文件大约为 226 MB。我正在看这篇文章,建议我设置此 Spark 配置键以限制分区的最大大小:Limiting max size of dataframe partition但它似乎不起作用?

这是该配置键的定义:

读取文件时打包到单个分区中的最大字节数。此配置仅在使用基于文件的源(例如 Parquet、JSON 和 ORC)时有效。

我也有点困惑这与写入的镶木地板文件的大小有何关系。

作为参考,我在glue 版本1.0、spark 2.4 上运行glue 脚本,脚本如下:

val conf: SparkConf = new SparkConf()
conf.set("spark.sql.catalogImplementation", "hive")
    .set("spark.hadoop.hive.metastore.glue.catalogid", catalogId)
val spark: SparkContext = new SparkContext(sparkConf)

val glueContext: GlueContext = new GlueContext(spark)
val sparkSession = glueContext.getSparkSession

val sqlDF = sparkSession.sql("SELECT * FROM db.table where id='item1'")
sqlDF.write.mode(SaveMode.Overwrite).parquet("s3://my-s3-location/")
Run Code Online (Sandbox Code Playgroud)

apache-spark apache-spark-sql aws-glue

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

aws-glue ×1