我有一个Web服务器,该服务器返回要加载到Apache Spark DataFrame中的JSON数据。现在,我有一个shell脚本,该脚本使用wget将JSON数据写入文件,然后运行一个类似于以下内容的Java程序:
DataFrame df = sqlContext.read().json("example.json");
我看过Apache Spark文档,似乎没有一种方法可以自动将这两个步骤结合在一起。必须有一种在Java中请求JSON数据,将其存储为对象然后将其转换为DataFrame的方法,但是我一直无法弄清楚。有人可以帮忙吗?
最佳答案
您可以将JSON数据存储到以下字符串列表中:
final String JSON_STR0 = "{\"name\":\"0\",\"address\":{\"city\":\"0\",\"region\":\"0\"}}";
final String JSON_STR1 = "{\"name\":\"1\",\"address\":{\"city\":\"1\",\"region\":\"1\"}}";
List<String> jsons = Arrays.asList(JSON_STR0, JSON_STR1);
其中每个String代表一个JSON对象。
然后,您可以将列表转换为RDD:
RDD<String> jsonRDD = sc.parallelize(jsons);
一旦有了RDD,就很容易拥有DataFrame:
DataFrame data = sqlContext.read().json(jsonRDD);