我有一个Spark Dataframe,它具有通过spark-xml解析的XML文件夹中的数据。我想添加一个包含源文件的列,这很容易通过input_file_name()函数完成。在Spark DataFrame中获取没有路径的文件名SQL
问题是这会返回整个路径,而我只想要文件名。所以我尝试在spark SQL中注册一个UDF,它提取文件名,但最后我得到一个空列。该函数的工作原理,但显然它获得空值作为输入,我不明白为什么。
有谁知道这个问题,以及如何解决它?
编辑:实例
如果我选择通过df.selectExpr('input_file_name()')
filename列,然后我得到的路径和文件名。如果我然而定义一个函数只是返回输入:
def f(path):
return path
,并通过session.udf.register('f',f)
注册,并通过df.selectExpr('f(input_file_name())')
再次选择的专栏中,我得到一个空列。
能否请您提供可重复的代码来说明你的问题? – mtoto
增加了一个例子。谢谢。 – stackoverflowthebest
@stackoverflowthebest:你试过'df.select()'而不是'df.selectExpr()'吗? – Shankar