You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GlueContext的create_dynamic_frame_from_options中获取类似Athena $path的S3完整路径

获取Glue DynamicFrame中数据的完整S3路径

要在Glue中实现类似Athena $path的功能,获取每条数据对应的完整S3存储路径(包括带随机字母数字的子目录),可以通过以下步骤实现:

1. 配置DynamicFrame的路径收集选项

调用create_dynamic_frame_from_options()时,需要开启两个关键配置:

  • 递归遍历子目录:在connection_options中添加"recurse": True,确保Glue会遍历指定路径下所有层级的子目录(包括那层带随机字母数字的目录)。
  • 开启路径字段注入:在format_options中添加"withPath": True,让每个数据记录自动带上其所在文件的完整S3路径。

代码示例

from awsglue.context import GlueContext
from pyspark.context import SparkContext

# 初始化Glue上下文
sc = SparkContext()
glue_context = GlueContext(sc)

# 配置S3连接参数
connection_options = {
    "paths": ["s3://my_s3_bucket/data/dev-data=2022-10-16/"],
    "recurse": True
}

# 配置格式选项(以JSON为例,根据实际数据格式替换)
format_options = {
    "withPath": True
}

# 创建带路径信息的DynamicFrame
dynamic_frame = glue_context.create_dynamic_frame_from_options(
    connection_type="s3",
    connection_options=connection_options,
    format="json",
    format_options=format_options
)

# 转换为Spark DataFrame查看结果
dynamic_frame.toDF().show(truncate=False)

2. 提取目标路径或随机字母数字部分

生成的DynamicFrame中会新增一个名为path的字段,值为类似s3://my_s3_bucket/data/dev-data=2022-10-16/abc123/file.json的完整文件路径。如果需要提取特定部分:

提取带随机字母数字的文件夹路径

使用Spark字符串处理函数截取到目标层级:

from pyspark.sql.functions import regexp_extract

df = dynamic_frame.toDF()
# 正则匹配提取包含随机字母数字的文件夹路径
df_with_folder_path = df.withColumn(
    "full_folder_path",
    regexp_extract(df["path"], r"(s3://my_s3_bucket/data/dev-data=\d{4}-\d{2}-\d{2}/[^/]+)/", 1)
)

df_with_folder_path.select("full_folder_path").show(truncate=False)

提取随机字母数字串

通过分割路径字符串获取目标部分:

from pyspark.sql.functions import split, element_at

df_with_random_part = df.withColumn(
    "random_alphanumeric",
    element_at(split(df["path"], "/"), -2)  # 倒数第二个层级为随机字母数字目录
)

df_with_random_part.select("random_alphanumeric").show(truncate=False)

注意事项

  • 不同数据格式(如Parquet、CSV)均支持withPath配置,无需额外修改格式参数。
  • 如果指定的S3路径已经精确到随机字母数字目录,可省略recurse: True,但通常建议保留以兼容动态生成的目录结构。

内容的提问来源于stack exchange,提问作者SKJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:45:35