0

文件分隔符我有特殊的分隔符的文本文件:特殊字符作爲火花

35¡1682¡231¡20.00000000¡50.00000000¡0.00000000¡0.00000000¡304.1100¡333.110000 
¡I¡1¡0¡10¡SHORT NAME 
1105682¡0¡100000.00000000¡100000.00000000¡1105682¡D¡D 

我想基於當前¡特殊的分隔符火花此文件分割。 請建議解決方法。這個命令的 產出比來作爲

val input_header = sc.textFile(path).first() 

Out of sc.textfile

當我在讀這RDD文件,並顯示它的內容。它顯示分隔符爲?

+0

正確讀取你的文件你檢查你的文件的UTF編碼? –

+0

你應該很可能檢查這個:https://stackoverflow.com/questions/43200978/spark-read-wholetextfiles-with-non-utf-8-encoding –

回答

0

您可以讀取文件作爲收集位和字符串位來提供編碼。 如果你使用Scala的API會是這樣的

val inputHeader = sc.binaryFiles(path).mapValues(line => new String(line.toArray(), StandardCharsets.{your charset}) 

然後,您可以確保星火有

inputHeader.first 
+0

在這裏,我們已經指定了分隔符。我的平臺是Unix,所以字符集是UTF_8的權利? – Vinitkumar

+0

import java.nio.charset._ val input_header = sc.binaryFiles(「hdfs:///user/pandvini_adm/B%52%41IN%53D%41ILY_BW_a12_NT%46_rnv_20160514_20160520121442.dat」)。 mapValues(線=>新的字符串((line.toArray(), 「UTF-8」))) 但是,得到誤差等 :31:錯誤:重載方法構造字符串替代品: (X $ 1:StringBuilder的)串 (X $ 1:StringBuffer的)字符串 (X $ 1:數組[字節])字符​​串 (X $ 1:陣列[字符])字符串 (X $ 1:字符串) 不能被應用到((數組[字節],字符串)) mapValues(line => new String((line.toArray(),「utf-8」))) – Vinitkumar

+0

您不應該使用像「utf-8」這樣的字符串。 您應該使用定義的字符集之一,例如StandardCharsets.UTF_8。 或者你可以使用Charset.forName(「utf-8」) – addmeaning