我有一个需要解析的巨大的嵌套JSON文件。我目前正在Pandas中进行此操作,但想了解是否可以在Dask中实现它的速度/可扩展性。
我当前的熊猫代码是:
import pandas as pd
json_data = pd.read_json(input_file)
feature_df = json_normalize(json_obj["Features"],
record_path=["Cycles","Pools"],
meta=["FeatureID"])
我已经在Dask中获得了以下代码,但是我无法在互联网上找到有关如何执行此操作的更多信息:
import dask.bag as db
import json
json_data = db.read_text(input_file).map(json.loads)
这将返回一个dask包,我需要弄清楚如何正确解析。
我的JSON的结构如下:
{
"FovID":1,
"Features":[
{
"FeatureID":"1_166_155",
"X":166,
"Y":155,
"Cycles":[
{
"CycleID":31,
"Pools":[
{
"PoolID":1,
"BC":"1224",
"Qual":"999",
"Category":"000"
},
{
"PoolID":2,
"BC":"0",
"Qual":"999",
"Category":"000"}
}]}
解决方案: 遵循@mdurant的建议,而不是使用打包袋,将JSON直接读取到数据框中,如下所示:
json_data = dd.read_json(self.input_s6, orient='columns').compute()
答案 0 :(得分:3)
您确实可以使用bag API来完成工作,但是dask-dataframe API也有一个read_json函数,其功能类似于熊猫版本。
使用了read_json
之后,您可能想使用map_partitions对所得到的字典进行逐行进一步的缩减。