0

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

4

1 回答 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 回答