2016-09-16 16 views
5

मैं एक साधारण सीएसवी फ़ाइल से स्पार्क डेटासेट बनाना चाहता हूं।एक CSV फ़ाइल से स्पार्क डेटासेट बनाएं

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] 

त्रुटि संदेश यह: "नहीं किया जा सकता ऊपर स्ट्रिंग से number_of_people डाली के रूप में यह हो सकता है BigInt को

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" 

यहाँ डेटासेट बनाने के लिए कोड है: यहाँ CSV फ़ाइल की सामग्री हैं truncate "

डाटाबेस डेटासेट बनाने और this blog post में यह विशेष त्रुटि संदेश बनाने के बारे में बात करता है।

इनकोडर्स बेसब्री से जाँच करें कि आपके डेटा उपयोगी त्रुटि संदेश उपलब्ध कराने की उम्मीद स्कीमा, से मेल खाता है इससे पहले कि आप डेटा के गलत तरीके से प्रक्रिया टीबीएस करने का प्रयास। उदाहरण के लिए, यदि हम बहुत कम डेटाटाइप का उपयोग करने का प्रयास करते हैं, तो किसी ऑब्जेक्ट में रूपांतरण के परिणामस्वरूप ट्रंकेशन (यानी numStudents बाइट से बड़ा होता है, जिसमें अधिकतम 255 का मान होता है) विश्लेषक एक उत्सर्जित करेगा AnalysisException।

मैं Long प्रकार का उपयोग कर रहा है, इसलिए मैं इस त्रुटि संदेश देखने की उम्मीद नहीं की थी।

उत्तर

11

उपयोग स्कीमा निष्कर्ष:

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

या प्रदान स्कीमा:

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

या डाली: स्ट्रिंग, राज्य:

val cities = spark.read 
    .option("header", "true") 
    .csv(location) 
    .withColumn("number_of_people", col("number_of_people").cast(LongType)) 
    .as[City] 
0
साथ अपने मामले वर्ग सिटी (नाम

स्ट्रिंग, number_of_people: लांग), आपको केवल एक पंक्ति की आवश्यकता है

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

तो आप कोड

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

सिर्फ काम करेंगे।

यह आधिकारिक स्रोत है [http://spark.apache.org/docs/latest/sql-programming-guide.html#overview][1]

संबंधित मुद्दे