Apache spark spark数据帧字符串到配置单元varchar

Apache spark spark数据帧字符串到配置单元varchar,apache-spark,hive,apache-spark-sql,spark-dataframe,Apache Spark,Hive,Apache Spark Sql,Spark Dataframe,我通过spark JDBC连接到数据帧从Oracle读取数据。在dataframe中,我有一列显然是StringType 现在,我想将其持久化到Hive中,但作为数据类型Varchar(5)。我知道字符串将被截断,但它没有问题 我尝试使用UDF,但它不起作用,因为dataframe没有varchar或char类型。我还使用以下方法在配置单元中创建了一个临时视图: val tv=df.createOrReplaceTempView(“t_名称”) val df=spark.sql(“从电视中选择c

我通过spark JDBC连接到数据帧从Oracle读取数据。在dataframe中,我有一列显然是
StringType

现在,我想将其持久化到Hive中,但作为数据类型
Varchar(5)
。我知道字符串将被截断,但它没有问题

我尝试使用UDF,但它不起作用,因为dataframe没有
varchar
char
类型。我还使用以下方法在配置单元中创建了一个临时视图:

val tv=df.createOrReplaceTempView(“t_名称”)
val df=spark.sql(“从电视中选择cast(col_名称为varchar(5))
但是当我
printSchema
时,我仍然看到一个
string
类型

如何将其保存为配置单元表中的
varchar
列?

尝试使用所需架构(本例中为varchar(5))创建配置单元表(“dbName.tableName”),并直接从数据框插入表中,如下所示

df.write.insertInto("dbName.tableName" ,overwrite = False)

有一个
org.apache.spark.sql.types.VarcharType
。你试过使用它吗?是的,它说字符串不能被强制转换为VarcharType