Вызвано: java .lang.IllegalArgumentException: Не удается получить тип JDB C для нуля - PullRequest
1 голос
/ 30 апреля 2020

Получение приведенной ниже ошибки при загрузке значения Null в базу данных в искре. 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)

Может кто-нибудь, пожалуйста, помогите мне

1 Ответ

1 голос
/ 30 апреля 2020

cast(NULL as smallint) вам нужно сделать ... это преобразует ноль в тип 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)

по-другому это будет тип null, а не small int type ..

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)

По этой причине вы получаете исключение.

...