2017-05-16 5 views
1

私はSpark 2.1を使用します。UTF-8エンコーディングでCSVファイルを解析するには?

入力csvファイルは、このCSVファイルを解析中

unicode-input-csv

の下に表示のようなUnicode文字を含む、出力が

私はビューにMSエクセル2010を使用

unicode-output-csv

以下のように示されていますファイル。

Javaコード使用は、私が入力と出力が同じで取得できますか

@Test 
public void TestCSV() throws IOException { 
    String inputPath = "/user/jpattnaik/1945/unicode.csv"; 
    String outputPath = "file:\\C:\\Users\\jpattnaik\\ubuntu-bkp\\backup\\bug-fixing\\1945\\output-csv"; 
    getSparkSession() 
     .read() 
     .option("inferSchema", "true") 
     .option("header", "true") 
     .option("encoding", "UTF-8") 
     .csv(inputPath) 
     .write() 
     .option("header", "true") 
     .option("encoding", "UTF-8") 
     .mode(SaveMode.Overwrite) 
     .csv(outputPath); 
} 

のですか?

+1

おかげ@Jacekに、私は、fileコマンドを使用してファイルのエンコーディングをチェックし、ファイルのエンコーディングを知るようになった、実際にISO-8859-1である、だから私はそれに応じて、このファイルを解析され、希望しまいました結果。 –

答えて

0

私の推測は、入力ファイルがUTF-8ではないため、間違った文字を取得しています。

私の推薦は、(まったくスパーク付き)、純粋なJavaアプリケーションを作成し、読み取りと書き込みがUTF-8エンコーディングと同じ結果をもたらすかどうかを確認することです。

1

sparkを使用してISO-8859-1を読み取ることができましたが、S3/hdfsに同じデータを保存して読み取ると、その形式はUTF-8に変換されます。

例:é to é

val df = spark.read.format("csv").option("delimiter", ",").option("ESCAPE quote", '"'). option("header",true).option("encoding", "ISO-8859-1").load("s3://bucket/folder") 
+0

ISO-8859-1形式のデータをaws S3/hdfsに保存するのに役立つものがありますか? – Saida

+0

答えは正しい質問ではありません。新しい質問を作成する必要があります。 – mch

+0

新しい質問がある場合は、[質問する](https://stackoverflow.com/questions/ask)ボタンをクリックして質問してください。コンテキストを提供する場合は、この質問へのリンクを含めてください。 - [レビューから](/レビュー/低品質の投稿/ 17723088) – Blackwood

関連する問題