scala - 原因:java.lang.IllegalArgumentException: Can't get JDBC type for null
问题描述
Null
在 spark 将值加载到数据库时出现以下错误。Datatype
目标表是smallint
Caused by: java.lang.IllegalArgumentException: Can't get JDBC type for null
代码 :
val hivedata = spark.sql(s"""select 1 as column1 , B a column2 , NULL as column3 from table""")
hivedata .write.mode(SaveMode.Append).jdbc(url = con, table = targettable, Pconnectionropertiess)
谁能帮帮我吗
解决方案
cast(NULL as smallint)
你必须这样做......这会将 null 转换为short
类型,如下面的架构所示。
val df1 =spark.sql(
" select 1 as column1 , 2 column2 , cast(NULL as smallint) as column3 from table ")
df1.show
df1.printSchema()
结果 :
+-------+-------+-------+
|column1|column2|column3|
+-------+-------+-------+
| 1| 2| null|
+-------+-------+-------+
root
|-- column1: integer (nullable = false)
|-- column2: integer (nullable = false)
|-- column3: short (nullable = true)
否则你的方式将是 nulltype 而不是小的 int 类型..
val df1 =spark.sql(" select 1 as column1 , 2 column2 , NULL as column3 from table ")
df1.show
df1.printSchema()
+-------+-------+-------+
|column1|column2|column3|
+-------+-------+-------+
| 1| 2| null|
+-------+-------+-------+
root
|-- column1: integer (nullable = false)
|-- column2: integer (nullable = false)
|-- column3: null (nullable = true)
这就是你得到例外的原因。
推荐阅读
- reactjs - 如何维护表格视图中每个单选按钮的状态 - 反应
- javascript - 如何使用 stringify 替换器更改嵌套的 JSON 值?
- vert.x - 尝试从 Quarkus 中的 consumerEvent 返回 List 时找不到类
- azure - Azure 企业应用程序获取分配用户的电子邮件
- quartz-scheduler - 如何为 Quartz JobStoreTX 手动指定数据库连接
- r - R:将 dplyr group_by 与 ggplot2 一起使用并更改每个组的标题
- python - 计算列表中的天数
- c# - 将 PowerBuilder 编写的 DLL 导入和引用到 C#
- html - 当我以移动格式查看此网站时如何打破界限。我使用 Tailwindcss、jinja 和 flask 来生成这个网站
- python - 以文本形式获取 ascii 响应,如何在 Python 中解码