故障排除
- JDBC 驱动程序类必须对客户端会话和所有执行器上的原始类加载器可见。这是因为 Java 的 DriverManager 类会进行安全检查,导致它在打开连接时会忽略所有对原始类加载器不可见的驱动程序。一种方便的方法是修改所有工作节点上的 compute_classpath.sh 以包含您的驱动程序 JAR。
- 某些数据库(例如 H2)会将所有名称转换为大写。您需要使用大写来引用 Spark SQL 中的这些名称。
- 用户可以在数据源选项中指定特定于供应商的 JDBC 连接属性以进行特殊处理。例如,
spark.read.format("jdbc").option("url", oracleJdbcUrl).option("oracle.jdbc.mapDateToTimestamp", "false")
。oracle.jdbc.mapDateToTimestamp
默认值为 true,用户通常需要禁用此标志以避免 Oracle 日期被解析为时间戳。