PySpark input_file_name() 到变量 NOT df
PySpark input_file_name() into a variable NOT df
我想将 input_file_name() 的值存储到变量而不是数据帧中。此变量将用于日志记录和 troubleshooting.etc
您可以使用 withColumn
和 input_file_name()
在数据框上创建一个新列,然后使用 collect()
操作,如下所示:
df = spark.read.csv("/FileStore/tmp/part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv")
df.show()
+-----+
| _c0|
+-----+
|43368|
+-----+
from pyspark.sql.functions import *
df1 = df.withColumn("file_name", input_file_name())
df1.show(truncate=False)
+-----+---------------------------------------------------------------------------------------------------------+
|_c0 |file_name |
+-----+---------------------------------------------------------------------------------------------------------+
|43368|dbfs:/FileStore/tmp/part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv|
+-----+---------------------------------------------------------------------------------------------------------+
现在,使用 collect
创建一个带有 file_name 的变量,然后在 /
上拆分它
file_name = df1.collect()[0][1].split("/")[3]
print(file_name)
输出
part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv
请注意,在您的案例中,collect
以及 split
之后的索引可能不同。
我想将 input_file_name() 的值存储到变量而不是数据帧中。此变量将用于日志记录和 troubleshooting.etc
您可以使用 withColumn
和 input_file_name()
在数据框上创建一个新列,然后使用 collect()
操作,如下所示:
df = spark.read.csv("/FileStore/tmp/part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv")
df.show()
+-----+
| _c0|
+-----+
|43368|
+-----+
from pyspark.sql.functions import *
df1 = df.withColumn("file_name", input_file_name())
df1.show(truncate=False)
+-----+---------------------------------------------------------------------------------------------------------+
|_c0 |file_name |
+-----+---------------------------------------------------------------------------------------------------------+
|43368|dbfs:/FileStore/tmp/part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv|
+-----+---------------------------------------------------------------------------------------------------------+
现在,使用 collect
创建一个带有 file_name 的变量,然后在 /
file_name = df1.collect()[0][1].split("/")[3]
print(file_name)
输出
part-00000-tid-6847462229548084439-4a50d1c2-9b65-4756-9a29-0044d620a1da-11-1-c000.csv
请注意,在您的案例中,collect
以及 split
之后的索引可能不同。