gpt4 book ai didi

mysql - 从 AWS RDS (MySQL) 加载表时是否可以强制定义模式

转载 作者:行者123 更新时间:2023-12-02 01:16:14 26 4
gpt4 key购买 nike

我正在使用 Apache Spark 从 AWS RDSMySQL 数据库中读取数据。

它实际上也是从数据库中推断模式。不幸的是,该表的其中一列的类型为 TINYINT(1)(列名:事件)。 active 列具有以下值:

  • 不活跃
  • 活跃
  • 待定
  • 等等

Spark 将 TINYINT(1) 识别为 BooleanType。因此,他将 active 中的所有值更改为 truefalse。结果,我无法确定值(value)。

是否可以在加载表以激发时强制模式定义?

最佳答案

TINYINT 类型转换为 boolean 的不是 spark,而是在兜帽。

因此,实际上您不需要为该问题指定架构。因为真正导致这种情况的是将数据类型 TINYINT(1) 视为 BIT 类型的 jdbc 驱动程序(因为服务器静默转换 BIT -> TINYINT(1) 创建表时)。

您可以在 MySQL official Connector/J Configuration Properties guide 中查看 jdbc 连接器的所有提示和陷阱。 .

您只需要通过将以下内容添加到您的 url 连接来为您的 jdbc 连接器传递正确的参数:

val newUrl = s"$oldUrl&tinyInt1isBit=false"

val data = spark.read.format("jdbc")
.option("url", newUrl)
// your other jdbc options
.load

关于mysql - 从 AWS RDS (MySQL) 加载表时是否可以强制定义模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42480888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com