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

时间:2018-08-17 07:28:49

标签: scala apache-spark apache-spark-sql

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

解决方案1:

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

Apache Spark Dataframe - Load data from nth line of a CSV file

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

解决方案2:

在此解决方案中,我删除了以符号comment*和数字/开头的行。根据实际评论的开头字母替换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

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