2017-06-15 70 views
0
100000,20160214,93374987 
100000,20160214,1925301 
100000,20160216,1896542 
100000,20160216,84167419 
100000,20160216,77273616 
100000,20160507,1303015 

我想讀取第一行沒有列名的csv文件。 如何閱讀並在同一時間用我指定的名稱命名列? 現在,我只是改名爲我指定的名字,像這樣的原始列:如何在沒有標題的情況下閱讀csv並在pyspark中讀取時用名稱命名?

df = spark.read.csv("user_click_seq.csv",header=False) 
df = df.withColumnRenamed("_c0", "member_srl") 
df = df.withColumnRenamed("_c1", "click_day") 
df = df.withColumnRenamed("_c2", "productid") 

什麼更好的辦法?

回答

5

您可以使用預定義模式將csv文件導入到數據框中。您定義模式的方式是使用StructTyoe和StructField對象。假設你的數據都是IntegerType數據:

from pyspark.sql.types import StructType, StructField, IntegerType 

schema = StructType([ 
    StructField("member_srl", IntegerType(), True), 
    StructField("click_day", IntegerType(), True), 
    StructField("productid", IntegerType(), True)]) 

df = spark.read.csv("user_click_seq.csv",header=False,schema=schema) 

應該可以工作。

+0

謝謝。如果該列是字符串類型,那麼我將用StringType()替換IntegerType(),是嗎? – yanachen

+0

是的,只要確保從'pyspark.sql.types'中導入'StringType' – DavidWayne

相關問題