トラブルシューティング
- JDBC ドライバークラスは、クライアントセッションとすべてのエグゼキュータでプライマーリクラスローダーから参照可能である必要があります。これは、Java の DriverManager クラスがセキュリティチェックを行うため、接続を開こうとしたときにプライマーリクラスローダーから参照できないすべてのドライバーを無視するようになるからです。これを行う便利な方法の 1 つは、すべてのワーカーノードで 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 の日付がタイムスタンプとして解決されるのを避けるために、ユーザーはこのフラグを無効にする必要があることがよくあります。