我尝试了Rename written CSV file Spark中描述的解决方案,但收到以下错误“ java.lang.IllegalArgumentException:路径必须是绝对的”。我该如何解决?它可以是scala或Python代码。谢谢:)
import org.apache.hadoop.fs._
val fs = FileSystem.get(sc.hadoopConfiguration)
var table_name = dbutils.widgets.get("table_name")
val filePath = "mnt/datalake/" + table_name + "/"
print("file path: " + filePath)
val fileName = fs.globStatus(new Path(filePath+"part*"))(0).getPath.getName
print("file name: " + fileName)
fs.rename(new Path(filePath+fileName), new Path(filePath+"file.csv"))
输出:
file path: mnt/datalake/MyTable/
file name: part-00000-tid-9118XXX-c000.csv
错误
java.lang.IllegalArgumentException: Path must be absolute: mnt/datalake/MyTable/part-00000-tid-9118XXXXc000.csv
答案 0 :(得分:1)
尝试一下:
import org.apache.hadoop.fs._
import org.apache.hadoop.fs.{FileSystem, Path}
val fs = FileSystem.get(sc.hadoopConfiguration)
val filePath = "dbfs:/FileStore/tables/part_00000-6a99e/"
val fileName = fs.globStatus(new Path(filePath))(0).getPath.getName
fs.rename(new Path(filePath+fileName), new Path(filePath+"file.csv"))
答案 1 :(得分:0)
在Databricks 中,dbfs 是databricks 文件系统,绝对路径,即完整路径,必须以dbfs 开头。我们可能会将 dbfs 比作 linux 文件系统中的根目录,这就是为什么 linux 中的完整路径是从根目录开始的。