首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将spark分区写入不同的S3路径

将spark分区写入不同的S3路径
EN

Stack Overflow用户
提问于 2021-08-31 10:48:59
回答 1查看 75关注 0票数 1

我有一份火种工作要做。我想将分区写入不同的s3文件夹。考虑数据帧中有5个分区。我希望将分区1写入s3路径1,将分区2写入s3路径2,依此类推。这有可能在spark中实现吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 13:30:09

这是可能的,如果你正在使用蜂巢转移。使用本地文件系统编写此示例,但它也适用于S3。首先,让我们创建一些目录

代码语言:javascript
复制
mkdir -p /tmp/foo/p0
mkdir -p /tmp/foo/bar/p1

然后运行以下PySpark代码片段:

代码语言:javascript
复制
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')

分区现在已写入定义的自定义位置:

代码语言:javascript
复制
ls /tmp/foo/p0
part-00003-06e0fc37-c542-495d-acdc-20d1631ba095.c000
ls /tmp/foo/bar/p1
part-00007-06e0fc37-c542-495d-acdc-20d1631ba095.c000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68997338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档