คำถามติดแท็ก apache-spark

Apache Spark เป็นเครื่องมือประมวลผลข้อมูลแบบกระจายแบบโอเพนซอร์สที่เขียนใน Scala ซึ่งให้ API แบบรวมและชุดข้อมูลแบบกระจายแก่ผู้ใช้สำหรับทั้งการประมวลผลแบบแบตช์และสตรีมมิ่ง Use Cases for Apache Spark มักจะเกี่ยวข้องกับ machine / deep learning, การประมวลผลกราฟ

15
ความแตกต่างระหว่าง DataFrame ชุดข้อมูลและ RDD ใน Spark
ฉันแค่สงสัยว่าอะไรคือความแตกต่างระหว่างRDDและDataFrame (Spark 2.0.0 DataFrame เป็นเพียงนามแฝงประเภทสำหรับDataset[Row])ใน Apache Spark? คุณสามารถแปลงหนึ่งเป็นอื่นได้หรือไม่

13
Spark - แบ่งพาร์ติชั่น () vs coalesce ()
อ้างอิงจาก Learning Spark โปรดทราบว่าการแบ่งส่วนข้อมูลของคุณเป็นการดำเนินการที่ค่อนข้างแพง Spark ยังมีเวอร์ชันที่repartition()เรียกว่าออพติไมซ์coalesce()ที่ช่วยให้หลีกเลี่ยงการเคลื่อนย้ายข้อมูล แต่ถ้าคุณลดจำนวนพาร์ติชัน RDD สิ่งหนึ่งที่ฉันได้รับคือมีrepartition()จำนวนพาร์ติชันสามารถเพิ่ม / ลดได้ แต่ด้วยcoalesce()จำนวนพาร์ติชันสามารถลดลงได้เท่านั้น หากพาร์ติชั่นนั้นถูกกระจายไปทั่วเครื่องหลายเครื่องและcoalesce()ทำงานอยู่มันจะหลีกเลี่ยงการเคลื่อนย้ายข้อมูลได้อย่างไร?

16
อะไรคือความแตกต่างระหว่าง map และ flatMap และกรณีการใช้งานที่ดีสำหรับแต่ละอัน?
ใครสามารถอธิบายความแตกต่างระหว่างแผนที่กับ flatMap ให้ฉันได้และเป็นกรณีการใช้งานที่ดีสำหรับแต่ละข้อ "การเรียบผลลัพธ์" หมายความว่าอย่างไร มันดีสำหรับอะไร?
249 apache-spark 

12
Spark java.lang.OutOfMemoryError: พื้นที่ Java heap
คลัสเตอร์ของฉัน: 1 ต้นแบบ 11 ทาสแต่ละโหนดมีหน่วยความจำ 6 GB การตั้งค่าของฉัน: spark.executor.memory=4g, Dspark.akka.frameSize=512 นี่คือปัญหา: ก่อนอื่นฉันอ่านข้อมูล (2.19 GB) จาก HDFS ถึง RDD: val imageBundleRDD = sc.newAPIHadoopFile(...) ประการที่สองทำอะไรกับ RDD นี้: val res = imageBundleRDD.map(data => { val desPoints = threeDReconstruction(data._2, bg) (data._1, desPoints) }) สุดท้ายส่งออกไปยัง HDFS: res.saveAsNewAPIHadoopFile(...) เมื่อฉันรันโปรแกรมมันจะแสดง: ..... 14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task …

7
ภารกิจไม่สามารถทำให้เป็นอนุกรมได้: java.io.NotSerializableException เมื่อเรียกใช้ฟังก์ชันภายนอกที่ปิดเฉพาะคลาสที่ไม่ใช่วัตถุเท่านั้น
รับพฤติกรรมที่ผิดปกติเมื่อเรียกใช้ฟังก์ชันนอกการปิด: เมื่อฟังก์ชั่นอยู่ในวัตถุทุกอย่างทำงานได้ เมื่อฟังก์ชั่นอยู่ในคลาสจะได้รับ: ภารกิจไม่สามารถทำให้เป็นอนุกรมได้: java.io.NotSerializableException: testing ปัญหาคือฉันต้องการรหัสในชั้นเรียนไม่ใช่วัตถุ มีความคิดว่าทำไมสิ่งนี้เกิดขึ้น? วัตถุ Scala เป็นอนุกรม (ค่าเริ่มต้นหรือไม่)? นี่คือตัวอย่างโค้ดที่ใช้งานได้: object working extends App { val list = List(1,2,3) val rddList = Spark.ctx.parallelize(list) //calling function outside closure val after = rddList.map(someFunc(_)) def someFunc(a:Int) = a+1 after.collect().map(println(_)) } นี่คือตัวอย่างที่ไม่ทำงาน: object NOTworking extends App { new testing().doIT } //adding …

2
แรงงาน, ผู้บริหาร, แกนในคลัสเตอร์ Spark Standalone คืออะไร?
ฉันอ่านCluster Mode Overviewและฉันยังคงไม่เข้าใจกระบวนการต่าง ๆ ในคลัสเตอร์ Spark Standaloneและการขนานกัน ผู้ปฏิบัติงานเป็นกระบวนการ JVM หรือไม่ ฉันวิ่งbin\start-slave.shและพบว่ามันกลับกลายเป็นคนงานซึ่งจริงๆแล้วเป็น JVM ตามลิงค์ข้างต้นผู้ปฏิบัติการเป็นกระบวนการที่เปิดตัวสำหรับแอปพลิเคชันบนโหนดผู้ปฏิบัติงานที่ทำงาน ผู้ปฏิบัติการก็เป็น JVM เช่นกัน นี่คือคำถามของฉัน: ผู้บริหารมีต่อแอปพลิเคชัน แล้วบทบาทของคนงานคืออะไร? มันประสานกับผู้ดำเนินการและสื่อสารผลลัพธ์กลับไปที่ไดรเวอร์หรือไม่ หรือคนขับรถโดยตรงพูดคุยกับผู้บริหารหรือไม่ ถ้าเป็นเช่นนั้นอะไรคือวัตถุประสงค์ของคนงาน? วิธีควบคุมจำนวนตัวเรียกทำงานสำหรับแอปพลิเคชัน สามารถสร้างงานให้ทำงานแบบขนานภายในตัวจัดการได้หรือไม่ ถ้าเป็นเช่นนั้นวิธีการกำหนดค่าจำนวนกระทู้สำหรับผู้ปฏิบัติการหรือไม่ ความสัมพันธ์ระหว่างผู้ปฏิบัติงานผู้บริหารและผู้บริหารคอร์คืออะไร (- ยอดรวมผู้บริหารคอร์)? การมีคนงานเพิ่มขึ้นต่อโหนดหมายความว่าอย่างไร Updated ลองยกตัวอย่างเพื่อทำความเข้าใจให้ดีขึ้น ตัวอย่างที่ 1: คลัสเตอร์แบบสแตนด์อะโลนที่มี 5 โหนดงาน (แต่ละโหนดมี 8 แกน) เมื่อฉันเริ่มโปรแกรมประยุกต์ด้วยการตั้งค่าเริ่มต้น ตัวอย่างที่ 2 การตั้งค่า คลัสเตอร์เดียวกันเป็นตัวอย่างที่ 1 แต่ฉันเรียกใช้แอปพลิเคชันด้วยการตั้งค่าต่อไปนี้ --executor-cores 10 --total-executor-cores 10 …

13
จะแสดงเนื้อหาคอลัมน์แบบเต็มใน Spark Dataframe ได้อย่างไร
ฉันใช้ spark-csv เพื่อโหลดข้อมูลลงใน DataFrame ฉันต้องการทำแบบสอบถามง่ายๆและแสดงเนื้อหา: val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("my.csv") df.registerTempTable("tasks") results = sqlContext.sql("select col from tasks"); results.show() คอลัมน์ดูเหมือนว่าถูกตัดทอน: scala> results.show(); +--------------------+ | col| +--------------------+ |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 07:15:...| |2015-11-16 …


13
วิธีการเปลี่ยนชื่อคอลัมน์ข้อมูลใน pyspark?
ฉันมาจากพื้นหลังของ pandas และฉันคุ้นเคยกับการอ่านข้อมูลจากไฟล์ CSV เป็น dataframe แล้วก็เปลี่ยนชื่อคอลัมน์เป็นสิ่งที่มีประโยชน์โดยใช้คำสั่งง่าย ๆ : df.columns = new_column_name_list อย่างไรก็ตามเดียวกันไม่สามารถใช้งานได้ใน pyspark dataframes ที่สร้างขึ้นโดยใช้ sqlContext ทางออกเดียวที่ฉันสามารถคิดให้ทำได้ง่าย ๆ คือ: df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', inferschema='true', delimiter='\t').load("data.txt") oldSchema = df.schema for i,k in enumerate(oldSchema.fields): k.name = new_column_name_list[i] df = sqlContext.read.format("com.databricks.spark.csv").options(header='false', delimiter='\t').load("data.txt", schema=oldSchema) นี่คือการกำหนดตัวแปรโดยทั่วไปสองครั้งและอนุมานสคีมาก่อนจากนั้นเปลี่ยนชื่อชื่อคอลัมน์แล้วโหลดดาต้าเฟรมอีกครั้งด้วยสคีมาที่อัปเดต มีวิธีที่ดีกว่าและมีประสิทธิภาพมากกว่าในการทำเช่นนี้ในแพนด้าหรือไม่? เวอร์ชั่น Spark ของฉันคือ 1.5.0

8
Apache Spark: จำนวนคอร์เทียบกับจำนวนของผู้ปฏิบัติการ
ฉันพยายามที่จะเข้าใจความสัมพันธ์ของจำนวนคอร์และจำนวนผู้บริหารเมื่อทำการรันงาน Spark บน YARN สภาพแวดล้อมการทดสอบมีดังนี้: จำนวนโหนดข้อมูล: 3 ข้อมูลจำเพาะของเครื่องโหนดข้อมูล: CPU: Core i7-4790 (จำนวนแกน: 4, จำนวนเธรด: 8) RAM: 32GB (8GB x 4) HDD: 8TB (2TB x 4) เครือข่าย: 1Gb รุ่น Spark: 1.0.0 รุ่น Hadoop: 2.4.0 (Hortonworks HDP 2.1) Spark job flow: sc.textFile -> filter -> map -> filter -> mapToPair -> ลดByKey …

20
จะหยุดการแสดงข้อความ INFO บน spark console ได้อย่างไร?
ฉันต้องการหยุดข้อความต่าง ๆ ที่กำลังมาบน spark shell ฉันพยายามแก้ไข log4j.propertiesไฟล์เพื่อหยุดข้อความเหล่านี้ นี่คือเนื้อหาของ log4j.properties # Define the root logger with appender file log4j.rootCategory=WARN, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # Settings to quiet third party logs that are too verbose log4j.logger.org.eclipse.jetty=WARN log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO แต่ข้อความยังคงปรากฏบนคอนโซล นี่คือตัวอย่างข้อความ 15/01/05 15:11:45 INFO SparkEnv: Registering BlockManagerMaster …

10
วิธีอ่านไฟล์ข้อความหลายไฟล์ใน RDD เดียว?
ฉันต้องการอ่านไฟล์ข้อความจำนวนมากจากตำแหน่ง hdfs และทำการแมปในไฟล์ซ้ำโดยใช้ spark JavaRDD<String> records = ctx.textFile(args[1], 1); สามารถอ่านไฟล์ได้ครั้งละหนึ่งไฟล์เท่านั้น ฉันต้องการอ่านมากกว่าหนึ่งไฟล์และประมวลผลเป็น RDD เดียว อย่างไร?
179 apache-spark 

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 

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

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