如何优化python脚本到pyspark def函数

2024-04-19 15:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个pyspark程序,它接受一个txt文件,然后在文件中列的左侧(开始)添加一些列。你知道吗

我的文本文件如下所示:

ID,Name,Age
1233,James,15

运行程序后,我希望它在表的左侧添加两列creation\u DT和created\u By。我想让它看起来像这样:

Creation_DT,Created_By,ID,Name,Age
"current timestamp", Sean,1233,James,15

下面的代码得到了我所需的输出,但我想知道是否有一种更简单的方法来使用pyspark优化下面的脚本。你知道吗

import pandas as pd
import numpy as np
with open
df = pd.read_csv("/home/path/Sample Text Files/sample5.txt", delimiter = ",")
df=pd.DataFrame(df)
df.insert(loc=0, column='Creation_DT', value=pd.to_datetime('today'))
df.insert(loc=1, column='Create_BY',value="Sean")
df.write("/home/path/new/new_file.txt")

有什么想法或建议吗?你知道吗


Tags: 文件nameimport程序txtiddfage
2条回答

我看不到您在代码中使用任何pyspark,所以我将这样使用pandas:

cols = df.columns
df['Creation_DT'] =pd.to_datetime('today')
df['Create_BY']="Sean"
cols = cols.insert(0, 'Create_BY')
cols = cols.insert(0, 'Creation_DT') 
df.columns = cols
df.write("/home/path/new/new_file.txt")

是的,转换成pyspark代码相对容易

from pyspark.sql import DataFrame, functions as sf
import datetime
# read in using dataframe reader
# path here if you store your csv in local, should use file:///
# or use hdfs:/// if you store your csv in a cluster/HDFS.
spdf = (spark.read.format("csv").option("header","true")
.load("file:///home/path/Sample Text Files/sample5.txt"))

spdf2 = (
    spdf
    .withColumn("Creation_DT", sf.lit(datetime.date.today().strftime("%Y-%m-%d")))
    .withColumn("Create_BY", sf.lit("Sean"))

spdf2.write.csv("file:///home/path/new/new_file.txt")

此代码假定您正在附加creation\u dt或使用相同的值创建\u。你知道吗

相关问题 更多 >