从SparkSQL中保存scala中的JSON

时间:2015-10-18 17:24:31

标签: json scala apache-spark-sql

我正在使用Spark SQL从JSON文件中提取一些信息。问题是我想将SQL分析的结果保存到另一个JSON中,以便用Plateau或d3.js绘制它。问题是我不知道该怎么做。有什么建议吗?

val inputTable = sqlContext.jsonFile(inputDirectory).cache() inputTable.registerTempTable("inputTable")

val languages = sqlContext.sql("""
        SELECT 
            user.lang, 
            COUNT(*) as cnt
        FROM tweetTable 
        GROUP BY user.lang
        ORDER BY cnt DESC 
        LIMIT 15""")
languages.rdd.saveAsTextFile(outputDirectory + "/lang")
languages.collect.foreach(println)

我不介意将数据保存到.csv文件中,但我不知道该怎么做。

谢谢!

1 个答案:

答案 0 :(得分:4)

只是

val languagesDF: DataFrame = sqlContext.sql("<YOUR_QUERY>")
languagesDF.write.json("your.json")

您无需返回RDD

但是,请注意,您的JSON将分为多个部分。 如果那不是您的意图,请阅读

关于如何规避这个问题(如果真的需要)。重点是使用repartitioncoalesce