私はspark-dataを解析したXMLフォルダからspark-xmlまでのデータを持っています。 input_file_name()関数で簡単に実行できるソースファイルを含む列を追加したいと思います。Spark DataFrameでパスなしのファイル名を取得するSQL
問題は、これはパス全体を返し、ファイル名のみを必要とすることです。だから、ファイル名を抽出するspark SQLにUDFを登録しようとしましたが、最後に空の列があります。この関数は機能しますが、明らかに入力として空の値が得られますが、私はその理由を理解していません。
誰もがこの問題を知っていて、それを解決する方法はありますか?
EDIT:例
私はdf.selectExpr('input_file_name()')
を通じて、ファイル名の列を選択した場合は、その後、私はパスとファイル名を取得します。私はしかし、単に入力を返す関数を定義する場合:
def f(path):
return path
をしてsession.udf.register('f',f)
を通してそれを登録し、そしてdf.selectExpr('f(input_file_name())')
を通じて再び列を選択し、私は空の列を取得します。
あなたの質問を説明するために再現性のあるコードを提供してくださいできますか? – mtoto
が追加されました。ありがとう。 – stackoverflowthebest
@stackoverflowthebest: 'df.selectExpr()'の代わりに 'df.select()'を試しましたか? – Shankar