Wor*_*nch 2 python dataframe pyspark
我们的设置是 PySpark。假设我使用spark.read.csv函数创建一个数据框df,即
df = spark.read.csv("directory/name_file.csv")
现在我需要一种方法来提取“name_file”,当然无需手动复制和粘贴。换句话说,我想要一个仅包含字符串“name_file”的火花列表或数据帧。
请仅提供涉及与 PySpark 兼容的 PySpark SQL 或 Python 代码的解决方案。
这个问题看似简单,但我花了很多时间寻找解决方案却一无所获。
有一个功能可以做到这一点:
input_file_name
然后,你split
。
from pyspark.sql import functions as F
df = df.withColumn("path", F.input_file_name())
df = df.withColumn("path_splitted", F.split("path","/"))
df = df.withColumn("name", F.col("path_splitted").getItem(F.size("path_splitted")-1))
df.show()
+---+--------------+--------+----------------+
| id| path| name| path_splitted|
+---+--------------+--------+----------------+
| 1|/foo/bar.csv |bar.csv |[, foo, bar.csv]|
+---+--------------+--------+----------------+
Run Code Online (Sandbox Code Playgroud)
编辑:使用spark 2.4,您可以使用它reverse
轻松获取最后一个元素
F.reverse("path_splitted").getItem(0)