在delta表中将文件夹名称作为列加载

kxeu7u2r  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(306)
/SRC1/trialbucket=1/1.parquet
/SRC1/trialbucket=2/2.parquet
/SRC2/trialbucket=1/3.parquet
/SRC2/trialbucket=2/4.parquet

文件夹中的所有上述Parquet文件都具有相同的模式。
如。 Col1,Col2,Col3 我必须用以下模式将所有文件加载到delta表中

Col1,Col2,Col3,Source

data1,data2,data3,SRC1

data11,data22,data33,SRC1
data1111,data222,data333,SRC1
data5,data6,data7,SRC2
data55,data66,data77,SRC2
data555,data666,data777,SRC2

我可以对每个文件夹都这样做,并将文件夹名称添加为最后一列( .withColumn )但我必须通过10000这样的文件夹阅读所有Parquet地板文件,并加载到一个表中,这需要很多时间!
如果没有for循环,是否还有其他方法可以获取文件夹名称并将其添加到列中?

bvpmtnay

bvpmtnay1#

你可以用 regexp_extractinput_file_name :

val df1 = df.withColumn("Source", regexp_extract(input_file_name(), "/(.*)/.*", 1))

相关问题