使用java将json格式字符串转换为数据集spark

时间:2017-09-03 03:26:56

标签: java json dictionary apache-spark dataset

非常新的火花......

假设我们有一个json格式的字符串,如下所示:

 String  entry1 = "{\"user_id\":1111,\"account_num\":12345}";

如何将其读入spark数据集?据我所知,数据集可以轻松地从路径中读取json格式的数据,如下所示:

SparkSession sparksession = SparkSession.builder()...
Dataset<Row> dataset = sparksession.read().json('path')

但如何直接将上面的String转换为数据集?谢谢。

1 个答案:

答案 0 :(得分:4)

更新: 创建一个列表并将其传递给createDataset,这将为您提供DataSet,然后您可以通过spark.read转换为您的数据集

List<String> jsonData = Arrays.asList(
        "{\"user_id\":1111,\"account_num\":12345}");
Dataset<String> anotherPeopleDataset = spark.createDataset(jsonData, Encoders.STRING());
Dataset<Row> anotherPeople = spark.read().json(anotherPeopleDataset);

我已查看过文档,但无法从String中找到读取内容。一些功能没有记录。但是以下是一个小解决方法

try {
    String  entry1 = "{\"user_id\":1111,\"account_num\":12345}";
    File file = File.createTempFile("temp",".txt");
    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
    bw.write(entry1);
    bw.close();
    SparkSession sparksession = SparkSession.builder()...
    Dataset<Row> dataset = sparksession.read().json(file.getAbsolutePath())
    } catch (IOException e) {
       e.printStackTrace();
      }