Rdd
由完整的csv
条记录组成,无法找到从中排除特定colums
的方法。
我尝试了drop()
。
例如CSV File
由三个columns no,name and age
组成。
现在我需要排除2列no和name
Val excluColumns='no,name'
rdd.drop(excluColumns)
在代码中出现问题。
这是spark
的新手,任何人都会指导我这样做。
EDIT-1
val cols="no,name"
val excluColumns= Seq(cols)
df.drop(excluColumns:_*)
.show()
它导致转换问题。
答案 0 :(得分:1)
StringWriter sw = new StringWriter();
sw.WriteLine("\"Id No\",\"Customer Name\",\"Customer Mobile No\",\"Customer BusinessZone\"");
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment;filename=Security_User.csv");
Response.ContentType = "text/csv";
foreach (var user in _securityUserService.GetAllCustomer())
{
sw.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
user.Id,
user.FullName,
user.Phone,
user.BusinessZones.Name));
}
Response.Write(sw.ToString());
Response.End();
}
答案 1 :(得分:1)
RDD没有列名所以您必须将其作为数据框读取并使用drop (假设您在文件中有标题)
该文件应为
no,name,age
1,bill,23
2,charles,24
3,gates,45
您将其作为
读取到数据框val df = sqlContext.read.format("com.databricks.spark.csv").option("header", true).load("File.csv")
应该给你
+---+-------+---+
|no |name |age|
+---+-------+---+
|1 |bill |23 |
|2 |charles|24 |
|3 |gates |45 |
+---+-------+---+
然后你可以创建要删除的列序列并使用它如下
val excluColumns= "no,name".split(",")
df.drop(excluColumns:_*)
.show()
这应该只为您提供年龄栏
+---+
|age|
+---+
| 23|
| 24|
| 45|
+---+