pyspark使用熊猫读取csv,如何保留标题

Posted

技术标签:

【中文标题】pyspark使用熊猫读取csv,如何保留标题【英文标题】:pyspark reading csv using pandas, how to keep header 【发布时间】:2017-02-13 19:13:42 【问题描述】:

我正在使用 pandas 块功能读取 csv。它可以工作,除了我无法保留标题。有没有办法/选项来做到这一点?这是示例代码:

import pyspark
import pandas as pd
sc = pyspark.SparkContext(appName="myAppName")
spark_rdd = sc.emptyRDD()

# filename: csv file
chunks = pd.read_csv(filename, chunksize=10000)
for chunk in chunks:
    spark_rdd +=  sc.parallelize(chunk.values.tolist())

    #print(chunk.head())
    #print(spark_rdd.toDF().show())
    #break

spark_df = spark_rdd.toDF()
spark_df.show()

【问题讨论】:

【参考方案1】:

试试这个:

import pyspark
import pandas as pd
sc = pyspark.SparkContext(appName="myAppName")
spark_rdd = sc.emptyRDD()

# Read ten rows to get column names
x = pd.read_csv(filename,nrows=10)
mycolumns = list(x)

# filename: csv file
chunks = pd.read_csv(filename, chunksize=10000)
for chunk in chunks:
    spark_rdd +=  sc.parallelize(chunk.values.tolist())

spark_df = spark_rdd.map(lambda x:tuple(x)).toDF(mycolumns)
spark_df.show()

【讨论】:

对于阅读标题,x = pd.read_csv(filename,nrows=1) 应该足够了吗? 我同意它的任意性,如果你取 1,5 或 10 行实际上并不重要,只要你至少取一个。【参考方案2】:

我最终使用了 databricks 的 spark-csv

sc = pyspark.SparkContext()
sql = pyspark.SQLContext(sc)

df = sql.read.load(filename, 
                 format='com.databricks.spark.csv', 
                 header='true', 
                 inferSchema='true')

【讨论】:

以上是关于pyspark使用熊猫读取csv,如何保留标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

使用带有熊猫数据的 CreateDataFrame 时将 NaN 替换为 null

PySpark 无法从 hdfs 读取 csv:HiveExternalCatalog 错误

将熊猫数据框保存到csv时如何保留numpy数组

将熊猫数据框保存到csv时如何保留numpy数组

如何使用代理上的熊猫从 url 读取_csv 文件?