我的输入文件包含下面的输入
"date","time","size","r_version","r_arch","r_os"
"2012-10-01","00:30:13",35165,"2.15.1","i686","linux-gnu"
"2012-10-01","00:30:15",212967,"2.15.1","i686","linux-gnu"
"2012-10-01","02:30:16",167199,"2.15.1","x86_64","linux-gnu"
我现在的输出就像
我所需的输出是
我尝试了以下代码
conf=SparkConf().setMaster("local").setAppName("logfile")
sc=SparkContext(conf = conf)
spark=SparkSession.builder.appName("yuva").getOrCreate()
lines=sc.textFile("file:///SaprkCourse/filelog.txt")
lines=Seq("file:///SaprkCourse/filelog.txt").t
header = lines.first()
lines = lines.filter(lambda row : row != header)
values=lines.map(lambda x: x.split(","))
df=values.toDF(header.split(","))
df.show()
答案 0 :(得分:0)
您应该检查数据框中的数据类型并将其强制转换为String。也许,数据框会自动推断日期数据类型。 例如,Pyspark将自动推断“ 2010-10-02”为日期时间。
答案 1 :(得分:0)
您可以在创建数据框时使用以下选项
option("quote", "\"")
希望这会有所帮助
答案 2 :(得分:0)
嗨,我希望您使用的是pyspark2,如果可以的话,您可以简单地在下面的命令中编写:
lines = spark.read.csv(“ file:///SaprkCourse/filelog.txt”,header = True)
否则,您可以通过添加如下所示的小功能来编辑代码:
lines = sc.textFile(“ file:///SaprkCourse/filelog.txt”)
header = lines.first()
lines = lines.filter(lambda row:row!= header)
定义文字(x):
k = x.replace('"','').strip().split(",")
return k
values = lines.map(text)
df = values.toDF(header.replace('“','')。split(”,“))
df.show()