Ошибка PKIX path building failed
означает, что Java пытается открыть соединение SSL, но не может найти цепочку сертификатов (путь), которая проверяет сертификат, предложенный сервером.
Код, с которого вы работаете, не доверяет сертификату, предлагаемому кластером. Кластеры, вероятно, используют самозаверяющие сертификаты.
Запускается из командной строки, Java ищет цепочку в хранилище доверенных сертификатов, расположенном по адресу jre / lib / security / cacerts. Запустите его как часть более крупной среды (Tomcat, Glassfish и т. Д.), И он будет использовать хранилище сертификатов этой среды.
Поскольку вы запустили spark_submit вручную, вам, вероятно, не хватает опции, чтобы указать, где найти хранилище ключей (сертификат сервера и закрытый ключ) и хранилище доверенных сертификатов (сертификаты CA). Они обычно указываются как:
-Djavax.net.ssl.trustStore=/somepath/truststore.jks
-Djavax.net.ssl.keyStore=/somepath/keystore.jks
Если вы работаете на Java 9+, вам также необходимо указать StoreType:
-Djavax.net.ssl.keyStoreType=<TYPE>
-Djavax.net.ssl.trustStoreType=<TYPE>
До Java 8 хранилища ключей всегда были JKS. Начиная с Java 9 они также могут быть PKCS12.
В случае самозаверяющего ключа его можно экспортировать из хранилища ключей и импортировать в доверенное хранилище в качестве доверенного сертификата. Есть несколько сайтов с инструкциями, как это сделать. Я нахожу сайт Якоба Дженкова вполне читабельным.