Rdd到数据框-我在数据框表中获得带有“”的输出,如“ 2012-10-10”,但我所需的输出却没有“”,如2012-10-10

时间:2019-09-13 04:54:09

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我的输入文件包含下面的输入

"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"

我现在的输出就像

present output

我所需的输出是

required output

我尝试了以下代码

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()

3 个答案:

答案 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()