2013-10-25 31 views
7

यदि आप स्केलिंग में एक छोटे से 22 से अधिक फ़ील्ड के साथ एक पाइप बनाना चाहते हैं तो आप स्कैला टुपल्स द्वारा सीमित हैं, जिनमें 22 से अधिक आइटम नहीं हो सकते हैं।क्या मैं स्केलिंग मानचित्र विधि में एक टुपल के बजाय संग्रह को आउटपुट कर सकता हूं?

क्या टुपल्स के बजाय संग्रह का उपयोग करने का कोई तरीका है? मुझे लगता है कि निम्नलिखित उदाहरण में कुछ ऐसा लगता है, जो दुख की बात नहीं करता है:

input.read.mapTo('line -> aLotOfFields) { line: String => 
    (1 to 24).map(_.toString) 
}.write(output) 

उत्तर

4

वास्तव में आप कर सकते हैं। यह पूछे जाने वाले प्रश्न में है - https://github.com/twitter/scalding/wiki/Frequently-asked-questions#what-if-i-have-more-than-22-fields-in-my-data-set

val toFields = (1 to 24).map(f => Symbol("field_" + f)).toList 

input 
    .read 
    .mapTo('line -> toFields) { line: String => 
    new Tuple((1 to 24).map(_.toString).map(_.asInstanceOf[AnyRef]): _*) 

    } 

पिछले नक्शा (। _ AsInstanceOf [AnyRef]) बदसूरत इसलिए यदि आप बेहतर समाधान मुझे कृपया पता है खोजने के लग रहा है।

3

कक्षाओं के मामले में अपने tuples लपेटें। यह आपके कोड को और अधिक पठनीय बनाएगा और क्रमशः tuples और संग्रह का उपयोग करने से सुरक्षित टाइप करेगा।

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