簡體   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