Spark:udf从路径获取目录名

基瓦

我有大量的路径列,我需要分成2列,即basename和dirname。我知道如何使用以下命令轻松获取路径的基本名称:

val df = Seq("/test/coucou/jambon/hello/file"
    ,"/test/jambon/test")
    .toDF("column1")
df.withColumn("basename", substring_index($"column1"  , "/", -1))
.show(2, false)
+------------------------------+---------+
|column1                       |basename |
+------------------------------+---------+
|/test/coucou/jambon/hello/file|file     |
|/test/jambon/test             |test     |
+------------------------------+---------+

但是我正在努力获得这样的目录名:

+------------------------------+--------------------------+
|column1                       |dirname                   |
+------------------------------+--------------------------+
|/test/coucou/jambon/hello/file|/test/coucou/jambon/hello |
|/test/jambon/test             |/test/jambon              |
+------------------------------+--------------------------+

我尝试了各种解决方案,但是找不到功能性的柱状解决方案。
我最好的办法是将减$"basename"$"column1",但我无法找到一个方法来减去字符串中的火花。

阿普尔巴·潘迪(Apurba Pandey)

您可以使用expr对column1进行子字符串化。该代码应如下所示。希望对您有所帮助。

//Creating Test Data
val df = Seq("/test/coucou/jambon/hello/file"
  ,"/test/jambon/prout/test")
  .toDF("column1")

val test = df.withColumn("basename", substring_index($"column1"  , "/", -1))
    .withColumn("path", expr("substring(column1, 1, length(column1)-length(basename)-1)"))

test.show(false)
+------------------------------+--------+-------------------------+
|column1                       |basename|path                     |
+------------------------------+--------+-------------------------+
|/test/coucou/jambon/hello/file|file    |/test/coucou/jambon/hello|
|/test/jambon/prout/test       |test    |/test/jambon/prout       |
+------------------------------+--------+-------------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从路径获取目录名

从文件路径获取目录名后的所有内容

Powershell 获取目录名

如何按顺序获取路径名,子目录名和文件列表?

从文件名获取目录名

从文件获取目录名而不使用完整路径

在Bash中的文件路径参数中获取最后一个目录名/文件名

批处理:遍历目录并获取目录名

是否可以指定目录名可变的路径?

确定目录名称路径

获取Golang中给定文件路径的目录名称(不是路径)

bash:从给定子目录名称的当前目录获取路径

从全目录路径获取目录名称,而不管斜杠是否结尾

for循环在目录名前添加目录名

剥离目录路径以获取文件名

如何使用ansible和从文件中获取的目录名创建目录

PhpStorm使用“ require_once”和目录名$ levels参数抱怨“找不到路径”

如何自动将终端标题设置为没有路径的目录名

Delphi:获取特定路径中的最大整数目录名称

shell命令“ basename”获取路径中的最后目录名称的“ ant”等效项是什么

在Bash脚本中获取当前目录名称(无完整路径)

获取当前工作目录名称而不是Node.js中的路径

如何从Windows批处理脚本中的文件路径获取父目录名称?

如何在perforce文件路径中获取第二个目录名称?

列出目录并获取目录名称

php:目录名+文件名

为什么tkinter.filedialog.ask目录未返回完整路径(具有所选目录名)?

正则表达式从路径中剥离所有目录名(保留文件名)

UDF无法在Spark Scala中获取文件名