我在尝试阅读作为资源存储在我的fat-jar中的镶木地板文件时遇到了问题,因此我尝试使用读取资源文件的代码并将其复制到磁盘上:
val inputFile = "test.parquet"
val parquetFile = "/part-r-00000-2185f9a7-ea70-41be-95d2-e9f70f93c43b.parquet"
FileUtils.copyInputStreamToFile(Main2.getClass.getResourceAsStream(parquetFile), new File(inputFile))
LOGGER.info("saved resource to external file")
此代码成功运行。但是当我尝试使用:
读取文件时spark.sqlContext.read.parquet(inputFile)
我收到此错误:
ERROR yarn.ApplicationMaster: User class threw exception: org.apache.spark.sql.AnalysisException: Path does not exist: hdfs://nameservice1/user/me/test.parquet
我该如何解决这个问题?我只是想能够读取作为资源存储在fat-jar中的镶木地板文件。我尝试了很多东西,但没有一个能奏效。
答案 0 :(得分:0)
FileUtils.copyInputStreamToFile
copy将Fat罐中的文件流输入到本地文件系统,而不是分布式文件系统(即HDFS)中。 尝试以下代码应该可以工作
spark.sqlContext.read.parquet("file:////< absolute path of inputFile >")