我有一份火种工作要做。我想将分区写入不同的s3文件夹。考虑数据帧中有5个分区。我希望将分区1写入s3路径1,将分区2写入s3路径2,依此类推。这有可能在spark中实现吗?
发布于 2021-08-31 13:30:09
这是可能的,如果你正在使用蜂巢转移。使用本地文件系统编写此示例,但它也适用于S3。首先,让我们创建一些目录
mkdir -p /tmp/foo/p0
mkdir -p /tmp/foo/bar/p1然后运行以下PySpark代码片段:
from pyspark import Row
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.config('hive.exec.dynamic.partition.mode', 'nonstrict')\
.enableHiveSupport()\
.getOrCreate()
spark.sql('create database if not exists foo')
spark.sql('create table if not exists foo.bar (y int) partitioned by (x int)')
spark.sql("alter table foo.bar add if not exists partition (x=0) location 'file:/tmp/foo/p0/'")
spark.sql("alter table foo.bar add if not exists partition (x=1) location 'file:/tmp/foo/bar/p1'")
spark.createDataFrame([
Row(y=0, x=0), Row(y=0, x=1)
]).write.insertInto('foo.bar')分区现在已写入定义的自定义位置:
ls /tmp/foo/p0
part-00003-06e0fc37-c542-495d-acdc-20d1631ba095.c000
ls /tmp/foo/bar/p1
part-00007-06e0fc37-c542-495d-acdc-20d1631ba095.c000https://stackoverflow.com/questions/68997338
复制相似问题