Extract file extension from Pyspark Dataframe column
我有一个pyspark数据帧,列
如何使用函数
谢谢。
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 | import pyspark.sql.functions as f data = [ ('/tmp/filename.tar.gz',) ] df = sqlCtx.createDataFrame(data, ["FullPath"]) df.withColumn("extension", f.regexp_extract("FullPath","\.[0-9a-z]+$", 0)).show() #+--------------------+---------+ #| FullPath|extension| #+--------------------+---------+ #|/tmp/filename.tar.gz| .gz| #+--------------------+---------+ |
但是,如果您想使用
1 2 3 4 5 6 7 8 | import os splittext = f.udf(lambda FullPath: os.path.splitext(FullPath)[-1], StringType()) df.withColumn("extension", splittext("FullPath")).show() #+--------------------+---------+ #| FullPath|extension| #+--------------------+---------+ #|/tmp/filename.tar.gz| .gz| #+--------------------+---------+ |
SQL函数模块有一个split功能,因此您可以在"。"上拆分完整路径。 角色并采取最后一个元素。 假设只有一个"。" 在每个文件路径字符串中。
1 2 3 | import pyspark.sql.functions as F myDataFrame = myDataFrame.withColumn("pathArray", F.split(myDataFrame.FullPath,".") myDataFrame = myDataFrame.withColumn("FileExtension", myDataFrame.pathArray.getItem(1)) |