json - 将 json 对象文件保存为 json 数组而不是 s3 上的 json 对象
问题描述
我正在尝试将 DF 保存为 s3 上的 json 格式。它被保存为 json 对象文件,但是我想要 json 数组文件。
I have csv file on s3, which i am loading into dataframe in aws glue. after performing some transformation i am writing DF to S3 format as json. But it is creating json objects file like:
{obj1} {obj2} 但是我想将它保存为 json 数组文件,例如:[{obj1},{obj2}]
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3",connection_options = {"paths": [s3_path],"useS3ListImplementation":True,"recurse":True}, format="csv", format_options={"withHeader" :True,"分隔符":"|"})
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("cdw_zip_id", "string", "cdw_zip_id", "string"), ("zip_code", "string", "zip_code", "string"), ("cdw_terr_id", "string", "cdw_terr_id", "string")], transformation_ctx = "applymapping1")
applymapping2 = applymapping1.toDF() applymapping2.coalesce(1).write.format("org.apache.spark.sql.json").mode("overwrite").save(args['DEST_PATH'])
实际为:{obj1} {obj2} 预期为:[{obj1},{obj2}]
解决方案
当调用 df.write 操作时,Spark 会进行惰性评估,即所有转换都应用于单个读取操作中从所有分区中读取的所有记录,同时跨配置的所有节点(其中存在的分区)执行工作负载。
由于所有任务都独立写入输出,因此我们可以期望只有单个记录写入目标,而不是整个 json 文件。
如果您执行合并操作,您将只能合并分区数据,而不能合并火花写入操作的行为。
推荐阅读
- sql - WHERE 子句等于变量
- css - 为什么两个css-table之间有差距?但不是当我使用块代替?
- arrays - 打印特定元素的数组
- python - 将多个函数应用于 pandas 数据框
- wordpress - Wordpress 和 WPforms 调查 - 如何让未注册用户只编译一次表单(使用 cookie 会话)
- angular - 如何将ngModel传递给Angular 9+中的子组件
- elasticsearch - ElasticSearch、NEST、C# - 如何设置 rest_total_hits_as_int 请求参数?
- ruby - 如何避免使用循环或方法手动编写大量(开关)案例
- javascript - 我在 Javascript 中的两个数字之间选择这个数组时遇到了麻烦
- typescript - Typescript typeRoots 优先级