2017-07-21 10 views
2

私はspark 2.1を使用していて、csvファイルを読み込もうとしました。ここでSpark - csv読み取りオプション

compile group: 'org.scala-lang', name: 'scala-library', version: '2.11.1' 
compile group: 'org.apache.spark', name: 'spark-core_2.11', version: '2.1.0' 

私のコードです。

import java.io.{BufferedWriter, File, FileWriter} 
import java.sql.{Connection, DriverManager} 
import net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy 
import org.apache.spark.sql.{DataFrame, SparkSession, Column, SQLContext} 
import org.apache.spark.sql.functions._ 
import org.postgresql.jdbc.PgConnection 

spark.read 
    .option("charset", "utf-8") 
    .option("header", "true") 
    .option("quote", "\"") 
    .option("delimiter", ",") 
    .csv(...) 

これはうまくいきます。問題は、スパーク読み取り(DataFrameReader)オプションキーが参照(link)と同じではないことです。リファレンスでは、エンコーディングには「エンコーディング」を使用しますが、動作させるべきではありませんが、charsetはうまく動作します。参照は間違っていますか?

val charset = parameters.getOrElse("encoding", 
     parameters.getOrElse("charset",StandardCharsets.UTF_8.name())) 

エンコーディングと文字セットの両方が有効なオプションで、あなたはどちらかのエンコーディングを設定するときに使用しても問題はないはず。

答えて

1

あなたはhereを見ることができます。

キャラクターセットは、spark csvコードがdatabricks spark csv projectからのレガシーサポートのためのもので、2.x以降のsparkプロジェクトにマージされています。それは区切り記号(今はsep)がどこから来るかです。

csvリーダーのデフォルト値に注意してください。デフォルト値を使用しているだけなので、コードから文字セット、引用符、および区切り文字を削除できます。簡単にあなたにお任せください:

spark.read.option("header", "true").csv(...) 
+1

私は多くの助けになりました:) –

関連する問題