トラブルシューティング
- JDBCドライバクラスはクライアントセッションおよび全てのexecutorの根本的なクラスローダから見えなければなりません。これは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のdateをtimestampとして解析されることを避けるためにこのフラグを無効にする必要があります。