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

无法将java日期保存到Cassandra

储志业
2023-03-14

我尝试使用spark将一些数据保存到casandra,但当我尝试保存日期时,我得到了

出现以下错误:

 Dataset<Table1> tData = dataFrame.as(Encoders.bean(Table1.class));
 List<Table1> tList = tData.collectAsList();

我的餐桌课

public class Table1 {
    private String field1;
    private Date field2;
}

我的cassandra表:

CREATE TABLE "a"."table1" (
field1 text,
field2 timestamp,
PRIMARY KEY (( field1 )));

有人知道怎么解决这个问题吗?

编辑:

SparkConf conf = new SparkConf();
conf.setAppName("Casandra Test");
conf.setMaster("local[*]");
conf.set("spark.cassandra.connection.host", adress);
App app = new App(conf);
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
 Map<String, String> options = new HashMap<String, String>();
options.put("url", sqlServerAddress);
options.put("dbtable", "(SELECT field1, field2 FROM table1");
options.put("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
DataFrame dataFrame = sqlContext.read().format("jdbc").options(options).load();        
Dataset<table1> ceData = dataFrame.as(Encoders.bean(Table1.class));
List<table1> ceList = ceData.collectAsList();           
JavaRDD<table1> ceRDD = sc.parallelize(app.readFromSqlServer(sqlContext));
javaFunctions(ceRDD).writerBuilder("a", "table1", mapToRow(Table1.class)).saveToCassandra();
sc.stop();

共有1个答案

何海
2023-03-14

好吧,我找到你的问题了。

如果您查看方法Encoders.bean()的官方留档,它表示:

Creates an encoder for Java Bean of type T.

T must be publicly accessible.

supported types for java bean field:

- primitive types: boolean, int, double, etc.
- boxed types: Boolean, Integer, Double, etc.
- String
- java.math.BigDecimal
- time related: java.sql.Date, java.sql.Timestamp
- collection types: only array and java.util.List currently, map support is in progress
nested java bean.

java。util。日期类型未提及,因此编码器不支持日期

您应该更新Table1类以使用另一种类型,而不是java。util。日期

 类似资料:
  • 这是使用电子邮件密码注册帐户的所有代码,保存验证电子邮件,将用户数据保存到Firestore数据库中。只有Firestore数据库无法运行。 else { Toast.makeText(register.this, “Error ! ” task.getException().getMessage(), Toast.LENGTH_SHORT).show();progressBar.setVisib

  • 我尝试用以下代码保存从internet下载的文件 但在运行时,我得到的错误如下 03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e

  • 我有下一个代码: 但当我运行它时,它会出错: TypeError:不支持的类型“ 我尝试了很多方法,但似乎不可能将日期时间保存到DynamoDB。顺便说一句,它在MongoDB中运行良好。 有什么解决办法吗?

  • 问题内容: 在将日期保存到数据库时,我遇到一种非常奇怪的行为。在我的(Linux centOS 6.2)服务器上,我使用glassfish应用程序服务器(3.1.1-内部版本12)和Java(1.7.0_09),该应用程序是使用Java + GWT开发的,并且使用PostgreSQL服务器(9.2.1)。在应用程序内部,有几个保存在数据库中的日期字段。日期字段使用datepicker(http:/

  • 问题内容: 我尝试使用此代码下载图像并将其保存在以下行中: 我在emulator.my应用程序上尝试了此操作,但出现异常,没有权限保存到此路径: 我也添加了这一行: 这是代码: 问题答案:

  • 我使用的是Rails3.2.13、Ruby1.9.3和Oracle11g。在数据库中保存带有像'ñ'这样的字符的记录时,会出现以下错误: 这些是我送给甲骨文的宝石: 我该怎么办?