sqlContext.read.json("...path.to.file...")
我正在使用pyspark用Python编写Spark脚本。JSON解析是在Python中还是在JVM上进行?如果是 Python,它是使用 C simplejson 扩展,还是原生 Python?
我正在做很多 JSON 解析,所以这里的性能很重要。
解析是在 JVM 中完成的,将 JSON 加载到文件的速度最快。
但是,如果您没有指定要read.json
的模式,则 spark 将探测所有输入文件以查找 json 的"超集"模式。因此,如果性能很重要,请首先使用示例文档创建小型 json 文件,然后从中收集架构:
schema = sqlContext.read.json("/path/to/small/file.json").schema
然后加载您的大型数据集指定模式:
df = sqlContext.read.json("/path/to/big/dataset", schema=schema)
当你执行sqlContext.read.json时,它会在幕后转换为由scala代码计算的表达式。这意味着 json 解析将由 JVM 完成。