繁体   English   中英

尝试使用to_csv将镶木地板文件保存到CSV时出错

[英]Errors when trying to save parquet file to a CSV using to_csv

我正在尝试读取其中包含一些实验室数据的镶木地板文件,然后将其加载到临时表中,对该表进行查询,然后将结果保存到CSV文件中,并以逗号分隔。 这是我的代码:

lines = sqlContext.read.parquet("hdfs:////data/lab_01/")
lines.registerTempTable("test_data")
resultsDF = sqlContext.sql("select * from results")

header = ["lab_key", "tray_id", "time", "gene_id", "source"]
pandas.resultsDF.to_csv("/data/results.csv", sep=",", columns = header)

我得到的错误是这样,它在代码的最后一行:

AttributeError:模块“ pandas”没有属性“ resultsDF”

我正在寻找带有标题的CSV文件,如下所示:

lab_key  tray_id   time   gene_id  Source
10       26905972   1     8315     2        
30       26984972   1     8669     2        
30       26949059   1     1023     2        
30      26905972    1     1062     1    

这是我的数据框resultsDF的样子:

[Row(lab_key=1130, tray_id=26984905972, time=1, gene_id=833715, source=2),
 Row(lab_key=1130, tray_id=26984905972, time=1, gene_id=866950, source=2),
 Row(lab_key=1130, tray_id=26984905972, time=1, gene_id=1022843, source=2),

要回答这个问题,您需要像这样转换为Pandas并转换为CSV

resultsDF.toPandas().to_csv(" ")

这是一种不好的方法,因为如果只需要保存为csv,则无需转换为Pandas DataFrame,则应使用以下方法

resultsDF.repartition(1).write.format('com.databricks.spark.csv').save('path+my.csv',header = 'true')

您有Spark数据框,需要首先将其转换为熊猫。

import pandas as pd

lines = sqlContext.read.parquet("hdfs:////data/lab_01/")
lines.registerTempTable("test_data")
resultsDF = sqlContext.sql("select * from results").toDF()


resDF=pd.DataFrame(resultDF)
header = ["lab_key", "tray_id", "time", "gene_id", "source"]

# removed pandas from below line
resDF.to_csv("/data/results.csv", sep=",", columns = header)

您可以在下面选择:

df.rdd.map(lambda line: ",".join[t1 for t1 in line]).saveAsTextFile("filename")

df.rdd.map(lambda line: ",".join(map(str, line) ) ).saveAsTextFile("filename")

让ms知道这是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM