2016-09-16 9 views
5

Basit bir CSV dosyasından bir Spark Veri Kümesi oluşturmak istiyorum. Can yukarı Ne olursa bigint dizeden number_of_people dökme değil": İşte Bir CSV dosyasından Spark Veri Kümesi oluşturma

var location = "s3a://path_to_csv" 

case class City(name: String, state: String, number_of_people: Long) 

val cities = spark.read 
    .option("header", "true") 
    .option("charset", "UTF8") 
    .option("delimiter",",") 
    .csv(location) 
    .as[City] 

hata iletisi şudur: Burada

name,state,number_of_people,coolness_index 
trenton,nj,"10","4.5" 
bedford,ny,"20","3.3" 
patterson,nj,"30","2.2" 
camden,nj,"40","8.8" 

Veri Kümesi yapmak için kod edilir: CSV dosyasının içeriği olan truncate "

Veritabanları, this blog post adresindeki Veri Kümeleri oluşturma ve bu özel hata iletisi oluşturma hakkında konuşuyor.

Kodlayıcılar hevesle verilerin yanlış süreci TBs girişiminde önce veri yararlı hata mesajları veren beklenen şema, uyup uymadığını kontrol. Örneğin, bir veri türü kullanmayacak olursak, bir nesneye dönüştürmenin kesilmesiyle sonuçlanacağı gibi (yani numStudents bir bayttan daha büyük, yani maksimum 255 değerini korur) Analizör yayınlayacaktır. AnalysisException.

Long türünü kullanıyorum, bu yüzden bu hata iletisini görmeyi beklemiyordum.

cevap

11

Kullanım şema çıkarım:

val cities = spark.read 
    .option("inferSchema", "true") 
    ... 

veya sağlamak şema:

val cities = spark.read 
    .schema(StructType(Array(StructField("name", StringType), ...) 

veya dökümlü: String, devlet: davanız sınıf City (isim ile

val cities = spark.read 
    .option("header", "true") 
    .csv(location) 
    .withColumn("number_of_people", col("number_of_people").cast(LongType)) 
    .as[City] 
0

dize, number_of_people: Uzun), sadece bir satıra ihtiyacınız var

private val cityEncoder = Seq(City("", "", 0)).toDS 

o zaman kod

val cities = spark.read 
.option("header", "true") 
.option("charset", "UTF8") 
.option("delimiter",",") 
.csv(location) 
.as[City] 

sadece çalışacaktır.

Bu resmi makam resmi kaynak [http://spark.apache.org/docs/latest/sql-programming-guide.html#overview][1]

İlgili konular