使用sparkSession.createDataFrame一次将多行写入镶木地板格式的s3



我成功地创建了一个单独的帧/行,并使用以下以镶木地板格式写入s3

data_for_frame = [{"Category": 'Category A', "ID": 1, "Value": Decimal(12.40)},
{"Category": 'Category B', "ID": 2, "Value": Decimal(30.10)},
{"Category": 'Category C', "ID": 3, "Value": Decimal(100.01)}
]

dynamic_frame = sparkSession.createDataFrame(data_frame, schema_frame)
frame = sparkSession.createDataFrame(data_frame, schema_frame)
frame.write.parquet(s3_path)

如何一次写入多行以最大限度地减少每次写入?意味着我创建了多行,并以某种方式在一次尝试中传递一个要写入s3的大帧我尝试将多个帧放入一个列表中,然后将其传递给frame.write,但错误AttributeError: 'list' object has no attribute 'write'不起作用

此外,如果我试图在一个单独帧的循环中写入s3,它会与一起出错

AnalysisException: 'path s3://stackoverflow-test-bucket/testing/default_bucket/year=2020/month=4/day=4 already exists.;'

尝试在循环中写入时,需要将mode添加为append

  • 默认情况下,如果spark发现我们正在写入的directoryexists抛出错误
  • 我们应该选择append(将新文件添加到目录中((或(overwrite

frame.write.mode("append").parquet(s3_path)

相关内容

最新更新