คำถามติดแท็ก scala

Scala เป็นภาษาการเขียนโปรแกรมที่ใช้งานทั่วไปโดยมีเป้าหมายหลักที่ Java Virtual Machine ออกแบบมาเพื่อแสดงรูปแบบการเขียนโปรแกรมทั่วไปในรูปแบบที่กระชับสง่างามและปลอดภัยในการใช้งาน คุณสมบัติที่สำคัญของมันคือ: ระบบประเภทคงที่ขั้นสูงที่มีการอนุมานประเภท; ประเภทฟังก์ชั่น รูปแบบจับคู่; พารามิเตอร์และการแปลงโดยนัย ผู้ประกอบการมากไป; การทำงานร่วมกันอย่างสมบูรณ์กับ Java; เห็นพ้องด้วย

15
วิธีที่ดีที่สุดในการผสานสองแผนที่และรวมค่าของคีย์เดียวกัน
val map1 = Map(1 -> 9 , 2 -> 20) val map2 = Map(1 -> 100, 3 -> 300) ฉันต้องการรวมพวกเขาและรวมค่าของคีย์เดียวกัน ดังนั้นผลลัพธ์จะเป็น: Map(2->20, 1->109, 3->300) ตอนนี้ฉันมี 2 วิธีแก้ไข: val list = map1.toList ++ map2.toList val merged = list.groupBy ( _._1) .map { case (k,v) => k -> v.map(_._2).sum } และ val …
179 scala  map  merge 

2
ประสิทธิภาพการจุดประกายสำหรับ Scala vs Python
ฉันชอบ Python มากกว่า Scala แต่เนื่องจาก Spark เขียนขึ้นโดยกำเนิดในภาษา Scala ฉันคาดว่ารหัสของฉันจะทำงานได้เร็วขึ้นใน Scala มากกว่ารุ่น Python ด้วยเหตุผลที่ชัดเจน ด้วยสมมติฐานดังกล่าวฉันคิดว่าเรียนรู้และเขียนรุ่น Scala ของโค้ด preprocessing ที่ใช้กันทั่วไปสำหรับข้อมูล 1 GB บางส่วน ข้อมูลจะถูกหยิบมาจากการแข่งขันใน Springleaf Kaggle เพียงเพื่อให้ภาพรวมของข้อมูล (มันมีขนาด 1,936 และ 145232 แถว) ข้อมูลประกอบด้วยประเภทต่างๆเช่น int, float, string, boolean ฉันใช้ 6 คอร์จาก 8 สำหรับการประมวลผล Spark; นั่นเป็นเหตุผลที่ฉันใช้minPartitions=6เพื่อให้ทุกแกนมีบางอย่างที่ต้องดำเนินการ รหัสสกาล่า val input = sc.textFile("train.csv", minPartitions=6) val input2 …

5
(เพราะเหตุใด) เราต้องเรียกแคชหรือคงอยู่กับ RDD
เมื่อชุดข้อมูลที่กระจายแบบยืดหยุ่น (RDD) ถูกสร้างขึ้นจากไฟล์ข้อความหรือการรวบรวม (หรือจาก RDD อื่น) เราจำเป็นต้องเรียก "แคช" หรือ "คงอยู่" เพื่อเก็บข้อมูล RDD ไว้ในหน่วยความจำอย่างชัดเจนหรือไม่ หรือข้อมูล RDD ถูกจัดเก็บในลักษณะกระจายในหน่วยความจำโดยค่าเริ่มต้นหรือไม่? val textFile = sc.textFile("/user/emp.txt") ตามความเข้าใจของฉันหลังจากขั้นตอนข้างต้น textFile เป็น RDD และมีอยู่ใน / บางส่วนของหน่วยความจำของโหนด ถ้าเป็นเช่นนั้นทำไมเราต้องเรียก "แคช" หรือ "คงอยู่" ใน textFile RDD?
171 scala  apache-spark  rdd 

3
ตัวบ่งชี้สกาล่าคืออะไร "โดยนัย"?
ฉันได้เห็นฟังก์ชั่นชื่อที่implicitlyใช้ในตัวอย่างสกาล่า มันคืออะไรและใช้อย่างไร? ตัวอย่างที่นี่ : scala> sealed trait Foo[T] { def apply(list : List[T]) : Unit }; object Foo { | implicit def stringImpl = new Foo[String] { | def apply(list : List[String]) = println("String") | } | implicit def intImpl = new Foo[Int] { | def apply(list : List[Int]) = …
169 scala  implicits 

13
เข้าสู่ระบบใน Scala
วิธีที่ดีในการเข้าสู่ระบบในแอปพลิเคชัน Scala คืออะไร? สิ่งที่สอดคล้องกับปรัชญาภาษาไม่เกะกะรหัสและบำรุงรักษาต่ำและไม่เป็นการรบกวน นี่คือรายการข้อกำหนดพื้นฐาน: ง่าย ไม่ถ่วงรหัส สกาล่านั้นยอดเยี่ยมสำหรับความกะทัดรัด ฉันไม่ต้องการให้รหัสครึ่งหนึ่งของฉันเป็นบันทึกการทำงาน รูปแบบการบันทึกสามารถเปลี่ยนแปลงได้เพื่อให้พอดีกับส่วนที่เหลือของบันทึกองค์กรของฉันและซอฟต์แวร์การตรวจสอบ รองรับระดับการบันทึก (เช่น debug, trace, error) สามารถเข้าสู่ดิสก์เช่นเดียวกับปลายทางอื่น ๆ (เช่นซ็อกเก็ตคอนโซล ฯลฯ ) การกำหนดค่าขั้นต่ำถ้ามี ทำงานในภาชนะ (เช่นเว็บเซิร์ฟเวอร์) (เป็นทางเลือก แต่ก็ดีมี) มาเป็นส่วนหนึ่งของภาษาหรือเป็นสิ่งประดิษฐ์ maven ดังนั้นฉันไม่ต้องแฮ็คงานสร้างของฉันเพื่อใช้งาน ฉันรู้ว่าฉันสามารถใช้โซลูชันการบันทึก Java ที่มีอยู่ได้ แต่พวกเขาล้มเหลวอย่างน้อยสองข้อข้างต้นนั่นคือความยุ่งเหยิงและการกำหนดค่า ขอบคุณสำหรับคำตอบของคุณ
168 logging  scala 

13
วิธีที่ดีที่สุดในการเปลี่ยนคอลเล็กชันให้เป็นแบบแผนที่โดยคีย์
หากฉันมีคอลเลกชันcประเภทTและมีสถานที่ให้บริการpบนT(จากประเภทPพูด) เป็นวิธีที่ดีที่สุดในการทำแผนที่โดยแยกแตกคีย์คืออะไร? val c: Collection[T] val m: Map[P, T] วิธีหนึ่งคือสิ่งต่อไปนี้: m = new HashMap[P, T] c foreach { t => m add (t.getP, t) } แต่ตอนนี้ฉันต้องการแผนที่ที่ไม่แน่นอน มีวิธีที่ดีกว่าในการทำเช่นนี้เพื่อให้เป็นหนึ่งในสายและฉันจบลงด้วยแผนที่ที่ไม่เปลี่ยนรูป ? (เห็นได้ชัดว่าฉันสามารถเปลี่ยนสิ่งต่าง ๆ ข้างต้นให้กลายเป็นยูทิลิตี้ห้องสมุดอย่างที่ฉันต้องการใน Java แต่ฉันสงสัยว่าใน Scala ไม่มีความจำเป็น)

6
ราคาขี้เกียจของ Scala (ซ่อนไว้) ราคาเท่าไหร่?
คุณลักษณะที่มีประโยชน์อย่างหนึ่งของ Scala คือlazy valการประเมิน a valล่าช้าจนกว่าจะมีความจำเป็น (ในการเข้าถึงครั้งแรก) แน่นอน a lazy valต้องมีค่าใช้จ่ายบางส่วน - สกาล่าบางแห่งต้องติดตามว่าได้รับการประเมินค่าแล้วและการประเมินผลต้องทำข้อมูลให้ตรงกันเนื่องจากหลายเธรดอาจพยายามเข้าถึงค่าเป็นครั้งแรกในเวลาเดียวกัน ค่าใช้จ่ายของ a lazy valคืออะไร - มีค่าสถานะบูลีนที่ซ่อนอยู่ซึ่งเชื่อมโยงกับ a lazy valเพื่อติดตามว่าได้รับการประเมินหรือไม่สิ่งที่ถูกซิงโครไนซ์และมีค่าใช้จ่ายเพิ่มเติมอีกหรือไม่ นอกจากนี้สมมติว่าฉันทำสิ่งนี้: class Something { lazy val (x, y) = { ... } } นี่คือเหมือนกับการมีสองแยกlazy vals xและyหรือฉันจะได้รับค่าใช้จ่ายเพียงครั้งเดียวสำหรับทั้งคู่(x, y)?

5
วิธีมาตรฐานในการทำงานกับวันที่และเวลาในสกาล่าคืออะไร ฉันควรใช้ประเภท Java หรือมีทางเลือก Scala ดั้งเดิมหรือไม่
วิธีมาตรฐานในการทำงานกับวันที่และเวลาในสกาล่าคืออะไร ฉันควรใช้ประเภท Java เช่น java.util.Date หรือมีทางเลือก Scala ดั้งเดิมหรือไม่
161 datetime  scala  jodatime 

8
scala vs java, ประสิทธิภาพและหน่วยความจำ? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกระตือรือร้นที่จะดู Scala และมีคำถามพื้นฐานที่ฉันไม่สามารถหาคำตอบ: โดยทั่วไปมีประสิทธิภาพและการใช้หน่วยความจำระหว่าง Scala และ Java แตกต่างกันหรือไม่

6
ใช้ def, val และ var ในสกาล่า
class Person(val name:String,var age:Int ) def person = new Person("Kumar",12) person.age = 20 println(person.age) บรรทัดของรหัสผลลัพธ์เหล่านี้12แม้ว่าจะperson.age=20ถูกดำเนินการเรียบร้อยแล้ว ผมพบว่าเรื่องนี้เกิดขึ้นเพราะผมใช้ def def person = new Person("Kumar",12)ใน หากฉันใช้ var หรือ Val 20ออกเป็น ฉันเข้าใจว่าค่าเริ่มต้นคือ val ในสกาล่า นี้: def age = 30 age = 45 ... แสดงข้อผิดพลาดในการรวบรวมเนื่องจากเป็นค่าเริ่มต้น เหตุใดชุดแรกของบรรทัดด้านบนจึงทำงานไม่ถูกต้องและยังไม่ผิดพลาด
158 scala 

16
การโทร jdbc แบบอะซิงโครนัสเป็นไปได้หรือไม่?
ฉันสงสัยว่ามีวิธีการโทรแบบอะซิงโครนัสกับฐานข้อมูลหรือไม่? ตัวอย่างเช่นลองนึกภาพว่าฉันมีคำขอใหญ่ ๆ ที่ต้องใช้เวลานานในการประมวลผลฉันต้องการส่งคำขอและรับการแจ้งเตือนเมื่อคำขอนั้นส่งคืนค่า (โดยส่งผู้ฟัง / ติดต่อกลับหรือบางอย่าง) ฉันไม่ต้องการบล็อครอให้ฐานข้อมูลตอบ ฉันไม่คิดว่าการใช้กลุ่มของเธรดเป็นวิธีแก้ปัญหาเพราะมันไม่ได้ปรับขนาดในกรณีที่มีการร้องขอที่เกิดขึ้นพร้อมกันจำนวนมากสิ่งนี้จะทำให้เกิดเธรดจำนวนมาก เรากำลังประสบปัญหานี้กับเซิร์ฟเวอร์เครือข่ายและเราพบวิธีแก้ปัญหาโดยใช้การเรียกระบบเลือก / แบบสำรวจ / epoll เพื่อหลีกเลี่ยงการมีหนึ่งเธรดต่อการเชื่อมต่อ ฉันแค่สงสัยว่าจะมีคุณสมบัติที่คล้ายกับคำขอฐานข้อมูลได้อย่างไร หมายเหตุ: ฉันทราบว่าการใช้ FixedThreadPool อาจเป็นการแก้ไขที่ดี แต่ฉันประหลาดใจที่ไม่มีใครพัฒนาระบบแบบอะซิงโครนัสจริงๆ (โดยไม่ต้องใช้เธรดพิเศษ) ** ปรับปรุง ** เพราะการขาดของการแก้ปัญหาในทางปฏิบัติจริงที่ฉันตัดสินใจที่จะสร้างห้องสมุด (ส่วนหนึ่งของ finagle) ตัวเอง: finagle-MySQL โดยทั่วไปจะทำการถอดรหัส / ถอดรหัสการร้องขอ / ตอบกลับ mysql และใช้ Finagle / Netty ภายใต้ประทุน มันปรับขนาดได้อย่างดีเยี่ยมแม้จะมีการเชื่อมต่อจำนวนมาก


6
เพิ่มขวดลงในงาน Spark - ส่งประกาย
จริง ... มีการพูดคุยกันค่อนข้างมาก อย่างไรก็ตามมีความคลุมเครือจำนวนมากและบางคำตอบที่ให้ ... รวมถึงการอ้างอิง jar ซ้ำในการกำหนดค่า jars / executor / driver หรือตัวเลือก รายละเอียดที่ไม่ชัดเจนและ / หรือละเว้น ควรอธิบายรายละเอียดที่คลุมเครือไม่ชัดเจนและ / หรือละเว้นสำหรับแต่ละตัวเลือก: ClassPath ได้รับผลกระทบอย่างไร คนขับรถ ผู้บริหาร (สำหรับงานที่กำลังทำงาน) ทั้งสอง ไม่ใช่เลย อักขระการแยก: จุลภาคเครื่องหมายโคลอนอัฒภาค หากมีการแจกจ่ายไฟล์โดยอัตโนมัติ สำหรับงาน (สำหรับผู้บริหารแต่ละคน) สำหรับไดรเวอร์ระยะไกล (หากทำงานในโหมดคลัสเตอร์) ประเภทของ URI ที่ยอมรับ: ไฟล์โลคอล, hdfs, http และอื่น ๆ หากคัดลอกไปยังตำแหน่งทั่วไปตำแหน่งนั้นอยู่ที่ไหน (hdfs, local?) ตัวเลือกที่มีผลต่อ: --jars SparkContext.addJar(...) วิธี SparkContext.addFile(...) …


14
อะไรทำให้โอเปอเรเตอร์ของ Scala โอเวอร์โหลด“ ดี” แต่ C ++ ของ“ ไม่ดี”?
ผู้ประกอบการมากไปใน C ++ นั้นหลายคนคิดว่าเป็นสิ่งไม่ดี (tm) และความผิดพลาดที่ไม่ควรทำซ้ำในภาษาที่ใหม่กว่า แน่นอนว่ามันเป็นคุณสมบัติหนึ่งที่ลดลงโดยเฉพาะเมื่อออกแบบ Java ตอนนี้ฉันเริ่มอ่าน Scala ฉันพบว่ามันมีลักษณะเหมือนตัวดำเนินการมากเกินไป (แม้ว่าในทางเทคนิคแล้วมันไม่มีตัวดำเนินการมากไปเพราะมันไม่มีตัวดำเนินการฟังก์ชันเท่านั้น) อย่างไรก็ตามดูเหมือนว่าจะไม่แตกต่างจากผู้ประกอบการมากไปใน C ++ ซึ่งผมจำได้ว่าผู้ประกอบการได้รับการกำหนดให้เป็นฟังก์ชั่นพิเศษ ดังนั้นคำถามของฉันคืออะไรทำให้แนวคิดของการกำหนด "+" ใน Scala เป็นความคิดที่ดีกว่าใน C ++

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.