当前位置: 首页 > 知识库问答 >
问题:

尝试通过Java+sparkSession从Cassandra DB接收JSON数据时出错

霍建章
2023-03-14

我试图通过Java+sparkSession从Cassandra表读取数据,方法应该将其作为JSON返回。

这是我的数据库:

CREATE TABLE user (
  user_id               uuid,
  email                  text, 
  first_name          text,
  last_name          text,
  user_password   text,
  created_date      timestamp, 
  updated_date     timestamp,
  PRIMARY KEY (user_id)
) WITH comment = 'List of all registered and active users';
public String getAccountData(UUID userid) throws ClassNotFoundException, SQLException {
        SparkSession sparkSession = config.getSparkSession();
        //"SELECT user.first_name,user.last_name, user.email FROM chat.user where user.id="+userid+";");

        Account account = new Account();
        Encoder<Account> accountEncoder = Encoders.bean(Account.class);

return sparkSession
        .read()
        .format("org.apache.spark.sql.cassandra")
        .options(new HashMap<String, String>() {
            {
                put("keyspace", "chat");
                put("table", "user");
            }
        })
        .load()
        .select("first_name", "last_name", "email")
        .filter("user_id = '" + userid +"'")
        .toJSON()
        .as(accountEncoder)
        .toString();
    }
package rest.account;

import java.io.Serializable;


public class Account implements Serializable {

   private String user_id;
   private String first_name;
   private String last_name;   
   private String email;

   public Account(){}

   public Account(String user_id, String first_name, String last_name, String email){
      this.user_id = user_id;
      this.first_name = first_name;
      this.last_name = last_name;
      this.email = email;
   }
   //------------------------------
   public String getId() {
      return user_id;
   }

   public void setId(String user_id) {
      this.user_id = user_id;
   }

   //------------------------------
   public String getFirstName() {
      return first_name;
   }

   public void setFirstName(String first_name) {
      this.first_name = first_name;
   }

   //------------------------------
   public String getLastName() {
          return last_name;
       }

   public void setLastName(String lastName) {
   this.last_name = last_name;
   }
   //------------------------------    
   public String getEmail() {
      return email;
   }

   public void setEmail(String email) {
      this.email = email;
   }        
}

HTTP状态500-org.glassfish.jersey.server.ContainerException:org.apache.spark.sql.AnalysisException:无法解析给定的输入列[value];

类型异常报告

消息org.glassfish.jersey.server.containerexception:org.apache.spark.sql.analysisexception:无法解析给定的输入列[value];

org.glassfish.jersey.server.containerexception:org.apache.spark.sql.analysisexception:无法解析给定的输入列[value];responsewriter.rethrow(responsewriter.java:278)org.glassfish.jerse.servlet.internal.responsewriter.failure(responsewriter.java:260)org.glassfish.jerse.server.serverruntime$responder.process(serverruntime.java:509)org.glassfish.jerse.server.serverruntime$2.run(serverruntime.java:334)org.glassfish.jerse.internal.errors$1.callrvice(webcomponent.java:427)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:388)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:341)org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:228)org.apache.tomcat.websocket.server.wsfilter.dofilter(

Apache Tomcat/9.0.0.m13

如果我没有这个转换到JSON代码,那么方法返回,例如:

但不是像First Name、Last Name、email@email.email这样的真实值

我会感激任何帮助的!

共有1个答案

郎飞航
2023-03-14

GetAccountData方法中,请尝试下面的代码。

return sparkSession
    .read()
    .format("org.apache.spark.sql.cassandra")
    .options(new HashMap<String, String>() {
        {
            put("keyspace", "chat");
            put("table", "user");
        }
    })
    .load()
    .select("first_name", "last_name", "email")
    .filter("user_id = '" + userid +"'")
    .toJSON()
    .first();
}
 类似资料:
  • 我正在建立一个阳光应用从Udacity课程。在第2课中,我尝试将应用程序连接到OpenWeatherMap.org站点上的云,以获取城市的天气数据。首先,基本查询起作用,即URL URL=新URL(“http://api.openweathermap.org/data/2.5/forecast?id=524901&appid=c21566b1153f87e9f1d256b962cd6d42”);但

  • //回收器和视图 //调用提取数据方法extractData(); //提取数据

  • 这是我得到的错误堆栈跟踪... 无法连接到mydb。创建到mydb的SQL模型连接连接时出错。(错误:oracle.jdbc.OracleDRiver)oracle.jdbc.OracleDRiver创建到mydb的JDBC连接时出错。(错误:oracle.jdbc.OracleDRiver)oracle.jdbc.OracleDRiver。 我正在使用oracle瘦驱动程序连接到数据库。。 SI

  • 本文向大家介绍JavaScript 通过POST发送和接收JSON数据,包括了JavaScript 通过POST发送和接收JSON数据的使用技巧和注意事项,需要的朋友参考一下 示例 6 提取请求承诺最初将返回Response对象。它们将提供响应头信息,但它们不直接包含响应主体,而响应主体可能尚未加载。可以使用诸如Response对象上的方法来等待响应主体加载,然后对其进行解析。.json()

  • 问题内容: 我在javascript中创建了一个函数,像这样: 我调用了脚本文件,并将其用于方法。 在控制器中,我有此操作 但是随着方法参数变为空。 该模型: 用POST发送数据时,我该如何采取行动方法? 我不知道该怎么用。另外,可以通过JSON将响应发送回(到ajax)吗? 问题答案: 建立模型 像下面的控制器 Java脚本

  • 尝试使用cmd连接SQL数据库时出错。这是我的节目。我使用jdk 6版本来编译和运行,谢谢。 错误: