【问题标题】:pyspark reading csv using pandas, how to keep headerpyspark使用熊猫读取csv,如何保留标题
【发布时间】: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()

【问题讨论】:

    标签: csv pandas apache-spark pyspark spark-dataframe


    【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2018-11-09
      • 1970-01-01
      • 2018-05-15
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多