故障排除
- 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 日期解析为时间戳。