首页 > 解决方案 > 从s3读取json文件以使用glueContext.read.json粘合pyspark会给出错误的结果

问题描述

有谁知道为什么glueContext.read.json给我一个错误的结果?基本上以下两种方法给了我非常不同的结果。爆炸后,df2记录比df1. 有人有过同样的经历吗?谢谢!!

df1 = glueContext.create_dynamic_frame_from_options("s3", format="json", connection_options = {"paths": ["s3://.../"]})


df2 = glueContext.read.json("s3://.../",multiLine=True)

标签: jsonamazon-web-servicespysparkaws-glue

解决方案


通常glueContext.create_dynamic_frame_from_options用于从源位置(大文件)读取分组文件,因此默认情况下它会考虑文件的所有分区。下面是语法:

df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")

这里groupSize是可定制的,您可以根据需要进行更改。

同时glueContext.read.json一般用于读取某个位置的特定文件。

因此,在您的情况下,可能会glueContext.read.json在读取时丢失一些数据分区。这就是两个数据帧的大小和行存在差异的原因。


推荐阅读