Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python脚本优化为pyspark def函数_Python_Pandas_Apache Spark_Pyspark - Fatal编程技术网

如何将python脚本优化为pyspark def函数

如何将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

我正在编写一个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
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,类型提示语法可能不受支持,我更新了答案以删除类型提示