scala 如何重命名保存在Azure数据湖上的文件

bvpmtnay  于 6个月前  发布在  Scala
关注(0)|答案(3)|浏览(65)

我试着在数据砖中使用scala合并两个文件,并使用以下代码将其保存回Datalake:

val df =sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("adl://xxxxxxxx/Test/CSV") 
df.coalesce(1).write.
              format("com.databricks.spark.csv").
              mode("overwrite").
              option("header", "true").
save("adl://xxxxxxxx/Test/CSV/final_data.csv")

字符串
但是,文件final_data.csv保存为目录,而不是包含多个文件的文件,实际的.csv文件保存为“part-00000-tid-dddddddd-xxxxxxxxxx. csv”。
如何重命名此文件以便将其移动到另一个目录?

gkl3eglg

gkl3eglg1#

明白了。它可以被重命名,并放置到另一个目标使用以下代码。同时,当前文件合并将被删除。

val x = "Source"
val y = "Destination"
val df = sqlContext.read.format("csv")
        .option("header", "true").option("inferSchema", "true")
        .load(x+"/")
df.repartition(1).write.
   format("csv").
   mode("overwrite").
   option("header", "true").
   save(y+"/"+"final_data.csv")
dbutils.fs.ls(x).filter(file=>file.name.endsWith("csv")).foreach(f => dbutils.fs.rm(f.path,true))
dbutils.fs.mv(dbutils.fs.ls(y+"/"+"final_data.csv").filter(file=>file.name.startsWith("part-00000"))(0).path,y+"/"+"data.csv")
dbutils.fs.rm(y+"/"+"final_data.csv",true)

字符串

qyuhtwio

qyuhtwio2#

Azure DataBricks中ADLS Gen 2中存储的数据库文件:
我们可以使用重命名或复制方法进行此操作。如果文件以part-0000开头或以.csv结尾,那么我们可以使用logic. logic:data.csv

from pyspark.sq1.functions import col

source_path ="abfss://[email protected]/sample/final_data/"

new_name="abfss://[email protected]/sample/output/data.csv"

getname = dbutils.fs.ls(source_path)

df_filelist = spark.createDataFrame(getname)

filename = df_filelist.filter (col ("name").like("%.csv%")) .select ("name") .collect)[0][0]

old_name = source_path +filename
dbutils.fs.mv (old_name, new_name)

dbutils.fs.rm(source_path+'/‘,True)

字符串

f0ofjuux

f0ofjuux3#

这是为我工作

Python

y = "dbfs:/mnt/myFirstMountPoint/apltperf/Shiv/Destination" 
df = sqlContext.read.format("csv").option("header", "true").option("inferSchema", "true").load(x+"/")
df.repartition(1).write.format("csv").mode("overwrite").save(y+"/"+"final_data.csv")
spark.conf.set('x', str(x)) spark.conf.set('y', str(y))

字符串

Scala

var x=spark.conf.get("x")  
var y=spark.conf.get("y")  dbutils.fs.ls(x).filter(file=>file.name.endsWith("csv")).foreach(f => dbutils.fs.rm(f.path,true)) 
dbutils.fs.mv(dbutils.fs.ls(y+"/"+"final_data.csv").filter(file=>file.name.startsWith("part-00000"))(0).path,y+"/"+"data.csv") 
dbutils.fs.rm(y+"/"+"final_data.csv",true)

相关问题