2017-10-04 1 views
0

"|^|"デリミタを使用してスパークデータフレーム出力をcsvファイルに書き込む必要があります。 私はこれをやろうとしています。スパークデータフレームcsv出力とUTF-8-BOMエンコーディングでの特殊文字区切り文字の追加方法

df.write.format("csv").option("delimiter", "\\|\\^\\|") 

しかし、エラーの下

java.lang.IllegalArgumentExceptionが取得:区切り文字のためにサポートされていない特殊文字:\ | \^\ |を

出力ファイルをエンコードするUTF-8-BOMを追加するには、デフォルトでUTF-8ですか?

ファイルの先頭に "\ uFEFF"を追加すると、ファイルのエンコーディングがUTF-8-BOMに変わります。どのようにしてこのcharをspark csvに追加できますか?私はアプローチdf.rdd.map(x=>x.mkString("|^|")).saveAsTextFile("dir path to store")

の下に行けば

また、どのように私は、データフレームの列に基づいて自分のデータを分割するのでしょうか? |

+1

私は – philantrovert

+0

は、なぜあなたは '使用して保存しておくとよいでしょうデリミタ火花-CSVは、複数文字をサポートしていないと思うのコードの下に使用することができます^ | 'キャラクター? spark-csvは1文字のみをサポートします。標準のCSVを使用しないでください。ファイルを読むときに、そのデリミタを再度使用してください。そんなことはできない? –

+0

問題はそれです|^|区切り文字は、他のすべての人が私の場合には実現不可能な変更を加えなければならない場合、多くのクライアントによって使用されます。 – SUDARSHAN

答えて

1

はちょうど

df.write.format("csv").option("delimiter","^").csv("dir path to store") 

を入れて、MULTI文字のためにあなたは

df.rdd.map(x=>x.mkString("|^|")).saveAsTextFile("dir path to store") 
+0

そしてどうすればこのソリューションでパーティション化するのですか? – SUDARSHAN

+0

最後にすべてがRDDなのでこのシナリオではパフォーマンスは影響を受けません –

+0

しかし、この場合のパーティションはどうですか – SUDARSHAN

関連する問題