使用java将json格式字符串转换为dataset spark

使用java将json格式字符串转换为dataset spark,java,json,dictionary,apache-spark,dataset,Java,Json,Dictionary,Apache Spark,Dataset,非常新的火花 假设我们有一个json格式字符串,如下所示: String entry1 = "{\"user_id\":1111,\"account_num\":12345}"; SparkSession sparksession = SparkSession.builder()... Dataset<Row> dataset = sparksession.read().json('path') 如何将其读入spark数据集?我知道dataset可以很容易地从以下路径读取js

非常新的火花

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

 String  entry1 = "{\"user_id\":1111,\"account_num\":12345}";
SparkSession sparksession = SparkSession.builder()...
Dataset<Row> dataset = sparksession.read().json('path')
如何将其读入spark数据集?我知道dataset可以很容易地从以下路径读取json格式的数据:

 String  entry1 = "{\"user_id\":1111,\"account_num\":12345}";
SparkSession sparksession = SparkSession.builder()...
Dataset<Row> dataset = sparksession.read().json('path')
SparkSession SparkSession=SparkSession.builder()。。。
Dataset Dataset=sparksession.read().json('path'))
但是如何直接将上面的字符串转换为数据集呢?多谢各位

更新: 创建一个列表并将其传递给createDataset这将为您提供数据集,然后您可以通过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);
List jsonData=Arrays.asList(
“{\'user\u id\':1111,\'account\u num\':12345}”);
Dataset anotherPeopleDataset=spark.createDataset(jsonData,Encoders.STRING());
Dataset anotherPeople=spark.read().json(anotherPeopleDataset);
我已经查阅了文档,但找不到readfrom字符串。有些函数没有文档记录。然而,下面是一个小的解决方法

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();
      }
试试看{
字符串entry1=“{\'user\u id\':1111,\'account\u num\':12345}”;
File File=File.createTempFile(“temp”、“.txt”);
BufferedWriter bw=新的BufferedWriter(新文件编写器(文件));
写入(entry1);
bw.close();
SparkSession SparkSession=SparkSession.builder()。。。
Dataset Dataset=sparksession.read().json(文件.getAbsolutePath())
}捕获(IOE异常){
e、 printStackTrace();
}

如果没有人回答,下一步是查看
json()
的源代码,看看是否可以在某个地方插入
java.io.StringReader
,强制它从字符串而不是文件中读取。这可能比在这里等别人回答要快。谢谢you@JimGarrison,是的,我现在正在查看它们。您可能会认为I/O将与解析分离,以便可以将其应用于各种输入源,但我在API中找不到任何明显的东西。如果您找到了解决方案,请将其作为答案发布并自行接受(在要求的延迟期后)。这是一个非常合理的问题,需要继续讨论。谢谢Sahil,我尝试过类似的方法,但不确定在现实生活中,当每秒都有数以万计的相同操作时,它将如何运行……对此我也不确定。告诉我一件事。从哪里获得字符串形式的数据,比如从数据库、api请求?我对Spark了解不多。如果您现在能告诉我们,我们可以从数据文件和mysql数据库以及hive中获取数据,那就太好了。。。所以,我们需要为sparksession部分提供一致的输入…@user6396我已经更新了我的答案,这样你就可以一次转换多个字符串