繁体   English   中英

在Scala Spark中从文件的第17行加载CSV文件

[英]Load a CSV file from line 17 of the file in scala spark

我在scala中使用spark的数据框存在问题。 我正在使用var df = spark.read.format("csv").load("csvfile.csv")方法读取CSV文件并将其存储在DF中。 我的CSV文件中有16行我不想阅读的注释。 我还没有发现避免标头的表达方式,但是它只有一行。 任何想法?

谢谢。

在solution1以下,仅适用于仅以一个公共符号/字母开头的注释。 solution2适用于解决方案列表中添加的所有符号。

解决方案1:

如果所有注释均以通用字母/符号/数字开头,请在此答案的关键comment option值中输入该符号。

Apache Spark Dataframe-从CSV文件的第n行加载数据

但是,如果某些注释以与其余注释不同的符号开头,则将无法解决。

解决方案2:

在此解决方案中,我删除了以符号*/和数字7开头的行。 根据您的实际注释的开头字母替换List值。

import ss.implicits._

val rd = ss.sparkContext.textFile(path)

rd.filter(x => !List('*','7','/').contains(x.charAt(0))) // reading file as RDD and filtering records starting with comment letters or symbols or alphabets
.map(x => x.split(","))
.map(x => (x(0),x(1),x(2),x(3)))
.toDF("id","name","department","amount")
.show()

输入:

*ghfghfgh
*mgffhfg
/fgfgdfgf
7gdfgh
1,Praveen,d1,30000
2,naveen,d1,40000
3,pavan,d1,50000

输出:

+---+-------+----------+------+
| id|   name|department|amount|
+---+-------+----------+------+
|  1|Praveen|        d1| 30000|
|  2| naveen|        d1| 40000|
|  3|  pavan|        d1| 50000|
+---+-------+----------+------+

在上面的示例中,输入的前四行是注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM