以具有以下结构的S3存储桶为例:
s3://francesco-totti/day/hour/min/*.json.lzo
一个具体的例子:
s3://francesco-totti/2019-11-01/22/13/*.json.lzo
已分区的字段(天,小时,分钟)不在原始json文件中。
最终目标是将上述存储桶转换为具有与源S3存储桶相同的分区结构的镶木地板。
转换为镶木地板时,如何继承源存储桶的分区?这可能吗?
我发现了两种解决方法:
下面的当前代码可以按预期方式转换为实木复合地板,但是它不会继承源S3存储桶的分区。
def main(args: Array[String]){
val spark = SparkSession
.builder()
.appName("Forza Totti")
.config("spark.hadoop.io.compression.codecs",
"com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec")
.getOrCreate()
import spark.implicits._
val bof = spark.read.json("s3n://francesco-totti/*/*/*/*.json.lzo")
bof.write.parquet("s3a://resulting-bucket/")
spark.stop()
}
}