我尝试在第一个写入数据帧后在目录之间执行几个fs.rename操作:
val iPath = new Path(inputPath)
//Let's suppose a df has been written to iPath.
val tmpPath = new Path(oPath.toString + "_temporary")
val oPath = new Path(outputPath)
fs.rename(oPath, tmpPath)
fs.rename(iPath, oPath) //-> here it fails with a nullPointerException
fs.rename(tmpPath, iPath)
为什么在第二步中抛出nullPointerException?
似乎文件系统需要等待,直到第一次重命名完成为止。
最佳答案
我相信这与未使用uri以及可能的配置文件初始化文件系统有关。您可能需要提供以下内容
val fs =new NativeAzureFileSystem()
fs.initialize(new URI ("wasbs://<containerName>@<storageAccount>.blob.core.windows.net/"),spark.sparkContext.hadoopConfiguration)
关于azure - 写入数据帧后,Spark避免hadoop fs.rename失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52315347/