读入火花数据框时如何从csv文件中删除列
Posted
技术标签:
【中文标题】读入火花数据框时如何从csv文件中删除列【英文标题】:How to drop a column from a csv file when reading into a spark dataframe 【发布时间】:2018-08-01 07:24:32 【问题描述】:我正在尝试从 csv 文件创建 spark 数据框,但是我不想在数据框中包含来自原始数据的特定列。这在设置架构或读取 csv 文件时是否可行?
【问题讨论】:
【参考方案1】:@Manu Valdés 的drop
答案是最好的方法,这里是pyspark
的代码
假设我们有一个包含 3 列的 file.csv
:
col1;col2;col3
val1;val2;val3
val4;val5;val6
现在使用 sqlContext
读取 csv 文件:
df = sqlContext.read.format('csv').options(header='true', delimiter=';').load('/FileStore/file.csv')
df.printSchema()
root
|-- col1: string (nullable = true)
|-- col2: string (nullable = true)
|-- col3: string (nullable = true)
删除col2
:
df2 = df.drop('col2')
df2.printSchema()
root
|-- col1: string (nullable = true)
|-- col3: string (nullable = true)
【讨论】:
是否可以在读取 csv 时删除该列,而不是在创建数据框后删除该列? 数据架构定义可以,但要删除的列必须在csv文件的末尾 最好的方法是使用drop('col2')
或select('col1', 'col3')
如果您更喜欢 RDD,那么您可以在创建数据框之前删除列【参考方案2】:
DataFrame 方法drop
返回一个没有指定列的DataFrame。
【讨论】:
以上是关于读入火花数据框时如何从csv文件中删除列的主要内容,如果未能解决你的问题,请参考以下文章