Tom*_*mer 1 jdbc apache-spark apache-spark-sql
我在数据库中有下表
+----------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| VERSION | bigint(20) | NO | | NULL | |
| user_id | bigint(20) | NO | MUL | NULL | |
| measurement_id | bigint(20) | NO | MUL | NULL | |
| day | timestamp | NO | | NULL | |
| hour | tinyint(4) | NO | | NULL | |
| hour_timestamp | timestamp | NO | | NULL | |
| value | bigint(20) | NO | | NULL | |
+----------------+------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
我正在尝试保存包含具有以下案例类结构的多行的 Spark 数据框:
case class Record(val id : Int,
val VERSION : Int,
val user_id : Int,
val measurement_id : Int,
val day : Timestamp,
val hour : Int,
val hour_timestamp : Timestamp,
val value : Long )
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 jdbc 驱动程序将数据帧保存到我的 sql 时:
dataFrame.insertIntoJDBC(...)
Run Code Online (Sandbox Code Playgroud)
我收到主键违规错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
Run Code Online (Sandbox Code Playgroud)
我尝试将 id=0 设置为所有行的默认值,并尝试从案例类中删除 id 字段,但都不起作用。
有人可以帮忙吗?
谢谢,托默
找到了。我遇到了 sql <-> java 列类型问题。根据:https: //www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/guide/jdbc/getstart/mapping.doc.html
bigint sql 列在 java 中应表示为 Long。在我将案例类别更改为:
case class Record(val id: Long,
val VERSION : Long,
val user_id : Long,
val measurement_id : Long,
val day : Timestamp,
val hour : Int,
val hour_timestamp : Timestamp,
val value : Long )
Run Code Online (Sandbox Code Playgroud)
并为其工作的数据框中的所有记录设置 id=0 。谢谢
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |