100000,20160214,93374987
100000,20160214,1925301
100000,20160216,1896542
100000,20160216,84167419
100000,20160216,77273616
100000,20160507,1303015
我想读取第一行没有列名的csv文件。 如何读取它并在同一时间用我指定的名称命名列? 现在,我只是使用我指定的名称重命名原始列:
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")
有更好的方法吗?
答案 0 :(得分:26)
您可以将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)
应该有效。
答案 1 :(得分:2)
对于那些希望在scala中执行此操作并且可能不想添加类型的人:
val df = spark.read.format("csv")
.option("header","false")
.load("hdfs_filepath")
.toDF("var0","var1","var2","var3")