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

如何在Palantir Foundry中基于PySpark Schema创建空数据集?

在Foundry里用指定PySpark Schema创建空数据集的方法

下面两种是最常用的实现方式,按需选择:

方法1:用Code Workbook快速生成

适合临时创建或者快速验证的场景:

  • 打开Foundry,新建一个Python环境的Code Workbook
  • 在代码单元格里先导入PySpark相关模块:
    from pyspark.sql import SparkSession
    from pyspark.sql.types import *  # 直接导入所有类型,省得逐个写
    
  • 把你拿到的PySpark Schema(不管是手动写的还是从现有数据集复制的)粘贴进来,比如:
    # 替换成你自己的Schema代码
    custom_schema = StructType([
        StructField("user_id", StringType(), nullable=False),
        StructField("user_name", StringType(), nullable=True),
        StructField("register_ts", TimestampType(), nullable=True)
    ])
    
  • 创建空DataFrame:
    spark = SparkSession.builder.getOrCreate()
    empty_df = spark.createDataFrame([], schema=custom_schema)
    
  • 点击代码单元格右上角的Add output,选好要保存的数据集路径和名称,运行单元格就行,跑完就得到带指定Schema的空数据集了。

方法2:用Python Transform构建(适合流水线集成)

如果需要把这个空数据集加入到数据流水线里,用Python Transform更合适:

  • 新建一个Python Transform
  • 在transform.py里写如下代码:
    from transforms.api import transform_df, Output
    from pyspark.sql import SparkSession
    from pyspark.sql.types import *
    
    @transform_df(
        Output("/your/target/path/empty-dataset")  # 替换成你要存的数据集路径
    )
    def compute(ctx):
        spark = SparkSession.builder.getOrCreate()
        # 替换成你的自定义Schema
        custom_schema = StructType([
            StructField("user_id", StringType(), nullable=False),
            StructField("user_name", StringType(), nullable=True),
            StructField("register_ts", TimestampType(), nullable=True)
        ])
        return spark.createDataFrame([], schema=custom_schema)
    
  • 提交并运行这个Transform,完成后目标路径下就会生成符合要求的空数据集。

注意事项

  • 要是你的Schema是从现有数据集复制来的,直接把复制的代码替换示例里的custom_schema就行,复制的代码已经包含了所有需要的类型定义,不用额外导入。
  • 如果要把这个空数据集用作本体对象的底层回写数据集,记得检查数据集的权限配置,还要保证本体对象的字段映射和Schema完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:48:16