我有一个输入文件employee.csv,存储在包含“Empid”、“Ename”、“Esalary”列的容器中,并且我在 databicks delta Lake 中使用这 3 列创建了一个目标表。
如果我只选择一列,即“Empid”(我需要在 config.ini 配置文件中配置 Empid 列名称),则仅应从输入文件读取该列数据,其他列值将传递 null
为了获得所需的结果,您可以将输入文件 employee.csv 作为数据帧读取,并仅选择“Empid”列。 然后,使用 withColumnRenamed 函数重命名该列以匹配配置文件 (config.ini) 中指定的列。 最后,使用 withColumn 和 lit 函数用空值填充其他两列。
我尝试过以下方法:
csv_file_path = f"abfss://[email protected]/newemp.csv"
df = spark.read.csv(csv_file_path, header=True)
df = df.select('Empid').withColumnRenamed('Empid', 'config_column')
from pyspark.sql.functions import lit
df = df.withColumn('Ename', lit(None)).withColumn('Esalary', lit(None))
delta_path = "/FileStore/tables/Delta/employee"
df.write.format('delta').mode('overwrite').save(delta_path)
结果:
config_column Ename Esalary
1 null null
2 null null
3 null null
4 null null