微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从Pyspark数据框到S3上的文件的持久推断架构

如何解决从Pyspark数据框到S3上的文件的持久推断架构

我有一个需要流式传输的JSON文件,因此我需要预先声明架构。该文件有300列以上,因此我想读取数据并推断模式,将该模式文件(以任何可用的格式保存)到S3,然后在使用该模式文件定义流传输的同时继续传输文件模式。

到目前为止,我所做的是:

read_df = spark.read.load(inputPath,format='json',inferSchema=True)
my_schema = read_df.schema

在这一点上,我尝试通过my_schema.json提取模式,该模式显然是StructType,但是我不知道如何将其持久化到S3。 my_schema.jsonValue()输出JSON,但是同样,我不确定如何将其写入S3。我尝试过:

with open("/dbfs:/my-mounted_drive/my_schema.json","w") as f:
    json.dump(my_schema.jsonValue(),f)

这段代码给我这个错误FileNotFoundError: [Errno 2] No such file or directory:

如果我将路径更改为以下内容,则不会出错,但找不到文件

with open("my_schema.json","w") as f:
        json.dump(my_schema.jsonValue(),f)

我完全不知道如何完成该解决方案,但是完美的流程将是读取并推断->保存到S3->流数据,其中 schema=<myfile>

有一些类似的问题,但没有重复,此外,这些解决方案都不适合我。

TIA

解决方法

您可以使用以下语法的dbutils put方法

 dbutils.fs.put(s"/mnt/" + MountName,json.dump(my_schema.jsonValue()))

考虑到您在MountName中具有有效的装载名称

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。