我有一個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