Apache spark spark数据帧字符串到配置单元varchar
我通过spark JDBC连接到数据帧从Oracle读取数据。在dataframe中,我有一列显然是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
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