我从 csv 文件创建 spark 数据框,并尝试将其插入到具有 integer 和 varchar 列的 rdbms 表中。由于我的数据框都是字符串类型,因此在“追加”模式下失败。如果我使用覆盖模式,将使用所有 varchar 列重新创建 rdbms 表。如何通过处理 spark 数据框中的数据类型以追加模式将数据插入 rdbms 表?
问问题
122 次
1 回答
1
在读取 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
于 2020-07-25T15:54:06.023 回答