2015-11-24 13 views
13

Ich habe versucht, die Databricks-Bibliothek zum Lesen von CSVs zu bekommen. Ich versuche, einen TSV, der von Bienenstock verursacht wird, in einen Funken Datenrahmen zu lesen, der das scala api verwendet.Lesen von TSV in Spark Datareframe mit Scala API

Hier ist ein Beispiel dafür ist, dass Sie in den Funken Shell ausführen können (ich die Beispieldaten öffentlich gemacht, so dass es für Sie arbeiten kann)

import org.apache.spark.sql.SQLContext 
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}; 

val sqlContext = new SQLContext(sc) 
val segments = sqlContext.read.format("com.databricks.spark.csv").load("s3n://michaeldiscenza/data/test_segments") 

Die documentation sagt man das Trennzeichen angeben kann, aber ich bin unklar wie man diese Option angibt

Antwort

24

Alle Optionsparameter werden wie unten in der option() Funktion übergeben:

val segments = sqlContext.read.format("com.databricks.spark.csv") 
    .option("delimiter", "\t") 
    .load("s3n://michaeldiscenza/data/test_segments") 
+6

Für den nativen DataFrameReader mit SparkSession heißt die Option "sep": 'spark.read.option (" sep "," \ t "). Csv (" PATH ")' –

+0

Ich bekomme einen langen Fehler "Traceback (letzter Aufruf zuletzt): Datei "/ tmp/zeppelin_ypspark-150828991340671 2111.py ", Zeile 367, in Ausnahme: Rückverfolgung (letzter Anruf zuletzt): Datei" /tmp/zeppelin_pyspark-1508289913406712111.py ", Zeile 360, in .... Datei"/usr/lib/spoke/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py ", Zeile 319, in get_return_value Format (target_id,". ", Name), Wert) Py4JJavaError: Beim Aufruf ist ein Fehler aufgetreten o929.laden. – Amir

+0

@Michael Discenza Ich denke, die Antwort muss für die neueste Version von Spark aktualisiert werden oder die Frage sollte die Spark-Version enthalten. –

3

Mit Spark-Version 2.0+, Stecker den eingebauten in der CSV-Dritten dependancy und ein bessere Leistung zu vermeiden:

val spark = SparkSession.builder.getOrCreate() 
val segments = spark.read.option("sep", "\t").csv("/path/to/file") 
Verwandte Themen