如何在加载到Spark数据帧之前预处理JSON数据

时间:2017-02-13 17:45:26

标签: python csv apache-spark pyspark

我正在尝试将JSON文件的大目录转换为CSV文件。但是,在将这些JSON文件转换为CSV或友好格式的Dataframe之前,我需要对它们进行转换并剪切它们。这是由transform_json函数完成的。

下面是一个有效的解决方案,但由于json.loads / json.dumps的后面和后四位,感觉很傻和慢。

rdd = (spark_context.textFile('*.json')
        .map(json.loads)
        .flatMap(transform_json)
        .map(json.dumps))

(spark_session.read.json(rdd)
    .write.format("com.databricks.spark.csv")
    .option("header", "true")
    .save("output_dir"))

我需要让它们通过PySpark Dataframe,因为我事先并不知道所有的列,而Spark会为我处理。

如何改进此代码?

1 个答案:

答案 0 :(得分:-1)

看来你想要合并架构? 您可以使用Parquet阅读: http://spark.apache.org/docs/latest/sql-programming-guide.html#schema-merging