2017-08-28 55 views
0

我有一個製表符分隔的文件,其註釋由##表示。我想文件讀入到一個數據幀,並且想使用類似:多字符評論字符串Spark CSV閱讀器

val targetDF = sparkSession.read.format("csv") 
    .option("header", "true") 
    .option("inferSchema", "true") 
    .option("delimiter", "\t") 
    .option("comment", "##") 
    .load(pathToFile) 

當我嘗試這個,我得到一個運行時異常:java.lang.RuntimeException: comment cannot be more than one character。處理這個問題的最佳方法是?

回答

0

然後只用一個'#',以'#'開頭的每一行都將被視爲註釋。這就是API所說的:

comment(默認空字符串):設置用於跳過以此字符開頭的行的單個字符。默認情況下,它被禁用。

但請確保在文件中沒有有效行以此字符開頭。

val targetDF = sparkSession.read.format("csv") 
.option("header", "true") 
.option("inferSchema", "true") 
.option("delimiter", "\t") 
.option("comment", "#") 
.load(pathToFile) 

編輯:因爲你的記錄可以包含一個「#」你必須忽略comment選項,只是手動篩選數據幀之後或解析之前刪除開始在你的文件中的兩個「#」的任何行它。

+0

問題是標題以單個'#'開頭,所以它會丟掉有效的行,並且也不能保證我的數據不以'#'開頭。 –

+0

難道你不能只在頭部加上別的東西嗎? – cheseaux

+0

我符合文件格式[此處](https://samtools.github.io/hts-specs/VCFv4.2.pdf)並嘗試將此工具公開給其他用戶。此外,文件非常大(〜1.5 TB),所以我想盡量減少IO –