从SparkSQL在scala中保存JSON



我使用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文件,但我不知道确切的方法。

谢谢!

只是

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

您不需要回到RDD

仍然要注意,您的JSON将被分割成多个部分。如果这不是你的意图,阅读

  • 在S3和
  • 中将大的Spark Dataframe保存为单个json文件
  • 使用spark-csv编写单个CSV文件(这里用于CSV,但可以轻松适应JSON)

说明如何绕过这个(如果确实需要)。关键是使用repartitioncoalesce

相关内容

  • 没有找到相关文章