有谁知道为什么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)
最佳答案
一般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
读取时丢失某些数据分区。这就是两个数据框中的大小和行数存在差异的原因。
关于json - 从 s3 读取 json 文件以使用glueContext.read.json 粘合 pyspark 会给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59584959/