apache-spark - 如何以追加模式将“所有字符串”数据帧写入 Spark JDBC 到具有 int 和 varchar 列的目标表
问题描述
我从 csv 文件创建 spark 数据框,并尝试将其插入到具有 integer 和 varchar 列的 rdbms 表中。由于我的数据框都是字符串类型,因此在“追加”模式下失败。如果我使用覆盖模式,将使用所有 varchar 列重新创建 rdbms 表。如何通过处理 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
推荐阅读
- macos - 如何在不验证 TouchId、macOS Catalina 的情况下在 Safari 上启用自动填充帐户/密码?
- python - 如何通过熊猫中的两个键将数据框与自身合并?
- pine-script - 更改图表分辨率时更改线条绘制长度?
- oracle - Oracle apex Shuttle 列表的特定限制
- sql-server - SQL Server 中的第一个值?
- python - 如何在 Tkinter 中模拟 Windows 屏幕超时?
- angular - 当我添加到 component.ts 时,html 消失了
- php - 使用 PayPal Checkout API,收款人被忽略
- android - 在参数中发送整个数据类实例
- android - 如何将 Flutter 应用程序发送给客户端进行测试