Я пытаюсь загрузить файл, который находится в src / main / resources. Он отлично работает в моем локальном, но когда я развертываю банку, вижу проблему. Я знаю, как получить входной поток, но в моем случае мне нужно загрузить файл.
Расположение файла:
src
main
resources
cert
truststore.ks
Строка filename = cert / truststore.ks
spark.sparkContext().addFile(getAbsolutePath(filename));
Метод:
public String getAbsolutePath(String fileName) throws IOException, URISyntaxException {
return getClass().getClassLoader().getResource(fileName).toExternalForm();
}
Ошибка:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:65)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: jar:file:/work/run/driver-20200525203940-0037/service-1.0.0-SNAPSHOT.jar!/cert/truststore.ks
at org.apache.hadoop.fs.Path.initialize(Path.java:205)
at org.apache.hadoop.fs.Path.<init>(Path.java:171)
at org.apache.spark.SparkContext.addFile(SparkContext.scala:1519)
at org.apache.spark.SparkContext.addFile(SparkContext.scala:1499)
Caused by: java.net.URISyntaxException: Relative path in absolute URI: jar:file:/work/run/driver-20200525203940-0037/service-1.0.0-SNAPSHOT.jar!/cert/truststore.ks
at java.net.URI.checkPath(URI.java:1823)
at java.net.URI.<init>(URI.java:745)
at org.apache.hadoop.fs.Path.initialize(Path.java:202)