我可以强制spark sql使用tinyint而不是byte吗?

h5qlskok  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(452)

这个问题在这里已经有答案了

如何更改spark sql的Dataframe中的列类型(23个答案)
5个月前关门了。
我正在尝试使用spark从配置单元表中提取数据并将其保存到sqlserver表中。我面临的一个问题是,一些列正在被拉入Dataframe中 BYTE 数据类型。我想把这些拉过来 TINYINT 或者 INT 如果 TINYINT 这是不可能的。
我的基本做法是:

query = [SQL query]

val df = sql(query)

df.write.jdbc([connection info])

如何将模式应用于强制使用某些数据类型的进程?

zzwlnbp8

zzwlnbp81#

要将spark dataframe列类型从一种数据类型更改为另一种数据类型,可以使用“withcolumn()”、“cast function”、“selectexpr”和sql expression。请注意,要转换为的类型应该是datatype类的子类。
在spark中,我们可以将dataframe列更改或强制转换为以下类型,因为这些类型是datatype类的子类。
arraytype、binarytype、booleantype、calendarintervaltype、datetype、hivestringtype、maptype、nulltype、numerictype、objecttype、stringtype、structtype、timestamptype
下面是一个sql表达式示例:

val df2 = df.selectExpr("cast(year as int) year")

对这个问题的详细答复如下:
如何更改spark sql的Dataframe中的列类型?

相关问题