2017-07-21 2 views
2

Ich benutze Funke 2.1 und versuchte, CSV-Datei zu lesen.Spark - CSV lesen Option

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' 

Hier ist mein Code.

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(...) 

Es funktioniert gut. Das Problem ist, dass der Optionsschlüssel spark read (DataFrameReader) nicht derselbe ist wie der Verweis (link). Hinweis sagte, ich sollte "Codierung" für die Codierung verwenden, aber nicht funktioniert, aber Zeichensatz funktioniert gut. Ist die Referenz falsch?

Antwort

1

können Sie here sehen:

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

Beide Codierung und charset gültige Optionen sind, und Sie sollten kein Problem haben, entweder, wenn die Codierung einstellen.

Charset ist einfach für Legacy-Unterstützung da, wenn der Spark-Code von der databricks spark csv project stammt, die seit 2.x in das Spark-Projekt eingebunden wurde. Von dort kommt auch das Trennzeichen (jetzt sep).

Beachten Sie die Standardwerte für den CSV-Reader, Sie können Zeichensatz, Anführungszeichen und Trennzeichen aus Ihrem Code entfernen, da Sie nur die Standardwerte verwenden. Sie mit einfach verlassen:

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

Ich half mir viel :) –