如何在 "all string" 模式下将数据帧写入 Spark JDBC 附加到具有 int 和 varchar 列的目标表



我从csv文件创建spark数据帧,并尝试将其插入到具有integer和varchar列的rdbms表中。由于我的数据帧都是字符串类型,所以它在"中失败;附加";模式如果我使用覆盖模式,rdbms表将使用所有varchar列重新创建。如何通过处理spark数据帧中的数据类型,以追加模式将数据插入rdbms表?

在读取CSV时,您可以推断模式或以编程方式指定模式。

val diamonds = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("header", "true")
.option("inferSchema", "true")
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv");

import org.apache.spark.sql.types._
val customSchema = new StructType()
.add("_c0",IntegerType,true)
.add("carat",DoubleType,true)
.add("cut",StringType,true)
.add("color",StringType,true)
.add("clarity",StringType,true)
.add("depth",DoubleType,true)
.add("table",DoubleType,true)
.add("price",IntegerType,true)
.add("x",DoubleType,true)
.add("y",DoubleType,true)
.add("z",DoubleType,true)

val diamonds_with_schema = spark.read.format("csv")
.option("header", "true")
.schema(customSchema)
.load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv");

一旦拥有了具有所需模式的数据帧,就可以将其附加到现有表中。

请检查:https://docs.databricks.com/data/data-sources/read-csv.html

相关内容

  • 没有找到相关文章

最新更新