如何将python脚本优化为pyspark def函数
我正在编写一个pyspark程序,它接受一个txt文件,然后在文件中列的左侧(开头)添加几列 我的文本文件如下所示:如何将python脚本优化为pyspark def函数,python,pandas,apache-spark,pyspark,Python,Pandas,Apache Spark,Pyspark,我正在编写一个pyspark程序,它接受一个txt文件,然后在文件中列的左侧(开头)添加几列 我的文本文件如下所示: ID,Name,Age 1233,James,15 Creation_DT,Created_By,ID,Name,Age "current timestamp", Sean,1233,James,15 运行程序后,我希望它在表的左侧添加两列,分别名为creation_DT和created_By。我试图让它看起来像这样: ID,Name,Age 1233,James,15 C
ID,Name,Age
1233,James,15
Creation_DT,Created_By,ID,Name,Age
"current timestamp", Sean,1233,James,15
运行程序后,我希望它在表的左侧添加两列,分别名为creation_DT和created_By。我试图让它看起来像这样:
ID,Name,Age
1233,James,15
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")
有什么想法或建议吗?我看不出您在代码中使用了任何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")
此代码假定您正在追加创建数据或使用相同的值创建数据。您的代码使用pandas,而不是pyspark。你想要什么样的解决方案?Pypark。我想将pandas转换为pyspark.is是spdf=dataframe-。。。或因为当我运行上面的代码时,它给出了我的InValid语法错误。可能是因为您使用的是python2,类型提示语法可能不受支持,我更新了答案以删除类型提示