pyspark.sql转换为JSON

时间:2019-08-23 01:46:03

标签: json pyspark

从pyspark.sql查询中获取有效json文档的最佳方法是什么。 例如,如果我运行:

spark.sql("show tables")

我看到它返回一个数据帧,我可以在其上调用“ toJSON”来获得RDD。但我找不到将其转换为json文档的好方法。我在上面调用了“ collect()”,但这不会返回有效的json,而且似乎不是将数据帧转换为json的最有效方法。

2 个答案:

答案 0 :(得分:1)

一种实现方法是将JSON RDD编写为文本文件。 JSON格式正确。

df.toJSON().saveAsTextFile("/tmp/jsonRecords")

请注意,这将为每个分区写入一个文件。因此,需要手动将它们连接起来。

该方法改编自使用Scala的答案here

答案 1 :(得分:0)

我使用以下方法得到json响应:

def exec_spark_sql_query(query):
    json_rdd = spark.sql(query).toJSON()
    rdd_list = json_rdd.collect()
    output_json = ''
    for i, entry in enumerate(rdd_list):
        if (i == 0):
            output_json = output_json + '['
        if (i == len(rdd_list) - 1):
            return (output_json + entry + ']')
        output_json = output_json + entry + ','
    return output_json

我知道这绝对不是获取使用SparkSQL执行SQL查询的Python API调用的json响应的最佳方法,但这可以完成工作。