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

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

23
ฉันจะเปลี่ยนประเภทคอลัมน์ใน DataFrame ของ Spark SQL ได้อย่างไร
สมมติว่าฉันกำลังทำสิ่งที่ชอบ: val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true")) df.printSchema() root |-- year: string (nullable = true) |-- make: string (nullable = true) |-- model: string (nullable = true) |-- comment: string (nullable = true) |-- blank: string (nullable = true) df.show() year make model comment blank 2012 …

8
วิธีการเก็บวัตถุที่กำหนดเองในชุดข้อมูล?
ตามที่แนะนำชุดข้อมูล Spark : ในขณะที่เราตั้งตารอ Spark 2.0 เราวางแผนการปรับปรุงที่น่าตื่นเต้นสำหรับชุดข้อมูลโดยเฉพาะ: ... Custom encoders - ในขณะที่เราสร้าง encoders อัตโนมัติสำหรับประเภทที่หลากหลายเราต้องการเปิด API สำหรับวัตถุที่กำหนดเอง และพยายามจัดเก็บประเภทที่กำหนดเองDatasetเพื่อนำไปสู่ข้อผิดพลาดต่อไปนี้เช่น: ไม่พบตัวเข้ารหัสสำหรับประเภทที่เก็บไว้ในชุดข้อมูล ประเภทดั้งเดิม (Int, String, ฯลฯ ) และประเภทผลิตภัณฑ์ (คลาสเคส) ได้รับการสนับสนุนโดยการนำเข้า sqlContext.implicits._ การสนับสนุนสำหรับซีเรียลไลซ์ประเภทอื่น ๆ จะถูกเพิ่มในรุ่นอนาคต หรือ: Java.lang.UnsupportedOperationException: ไม่พบตัวเข้ารหัสสำหรับ .... มีวิธีแก้ไขปัญหาอยู่หรือไม่? หมายเหตุคำถามนี้มีอยู่เป็นจุดเริ่มต้นสำหรับคำตอบ Community Wiki เท่านั้น โปรดอัปเดต / ปรับปรุงทั้งคำถามและคำตอบ

8
วิธีการเลือกแถวแรกของแต่ละกลุ่ม?
ฉันมี DataFrame สร้างขึ้นดังนี้ df.groupBy($"Hour", $"Category") .agg(sum($"value") as "TotalValue") .sort($"Hour".asc, $"TotalValue".desc)) ผลลัพธ์ดูเหมือนว่า: +----+--------+----------+ |Hour|Category|TotalValue| +----+--------+----------+ | 0| cat26| 30.9| | 0| cat13| 22.1| | 0| cat95| 19.6| | 0| cat105| 1.3| | 1| cat67| 28.5| | 1| cat4| 26.8| | 1| cat13| 12.6| | 1| cat23| 5.3| | 2| cat56| 39.6| …

15
จะปิดการบันทึกข้อมูลใน Spark ได้อย่างไร?
ฉันติดตั้ง Spark โดยใช้คู่มือ AWS EC2 และฉันสามารถเปิดใช้งานโปรแกรมได้อย่างดีโดยใช้bin/pysparkสคริปต์เพื่อไปที่จุดประกายประกายและยังสามารถทำ Quide Quick Start ได้สำเร็จ อย่างไรก็ตามฉันไม่สามารถใช้ชีวิตของฉันหาวิธีหยุดการบันทึก verbose ทั้งหมดINFOหลังจากแต่ละคำสั่ง ฉันได้ลองเกือบทุกสถานการณ์ที่เป็นไปได้ในรหัสด้านล่าง (ความเห็นออกการตั้งค่าปิด) ภายในlog4j.propertiesไฟล์ของฉันในconfโฟลเดอร์ที่ฉันเปิดแอปพลิเคชันจากเช่นเดียวกับในแต่ละโหนดและไม่มีอะไรทำอะไรเลย ฉันยังคงได้รับINFOข้อความสั่งพิมพ์หลังจากดำเนินการแต่ละคำสั่ง ฉันสับสนมากเกี่ยวกับวิธีการทำงานนี้ #Set everything to be logged to the console log4j.rootCategory=INFO, 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.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO …

3
ขั้นตอนแบ่งออกเป็นภารกิจใน Spark อย่างไร
สมมติว่าสำหรับ Spark ต่อไปนี้มีเพียงหนึ่งงานเท่านั้นที่ทำงานในทุกจุด สิ่งที่ฉันได้รับจนถึง นี่คือสิ่งที่ฉันเข้าใจว่าเกิดอะไรขึ้นใน Spark: เมื่อ a SparkContextถูกสร้างขึ้นโหนดของผู้ทำงานแต่ละคนจะเริ่มต้นตัวเรียกทำงาน ผู้บริหารเป็นกระบวนการแยก (JVM) ที่เชื่อมต่อกลับไปที่โปรแกรมไดรเวอร์ ผู้บริหารแต่ละคนมี jar ของโปรแกรมควบคุม การออกจากโปรแกรมควบคุมการปิดตัวจัดการการทำงาน ผู้บริหารแต่ละคนสามารถมีพาร์ติชันได้บ้าง เมื่องานถูกดำเนินการแผนการดำเนินการจะถูกสร้างขึ้นตามกราฟเชื้อสาย งานการดำเนินการจะแบ่งออกเป็นขั้นตอนที่ขั้นตอนที่มีการแปลงและการดำเนินการที่อยู่ใกล้เคียง (ในกราฟเชื้อสาย) เป็นจำนวนมาก แต่ไม่มีการสับ ดังนั้นขั้นตอนจะถูกคั่นด้วยการสับ ฉันเข้าใจ งานคือคำสั่งที่ส่งจากไดรเวอร์ไปยังผู้ปฏิบัติการโดยการทำให้วัตถุฟังก์ชั่นเป็นอนุกรม ตัวจัดการ deserializes (พร้อมไดร์เวอร์ jar) คำสั่ง (ภารกิจ) และเรียกใช้งานบนพาร์ติชัน แต่ คำถาม (s) ฉันจะแบ่งเวทีออกเป็นงานเหล่านั้นได้อย่างไร โดยเฉพาะ: งานนั้นถูกกำหนดโดยการเปลี่ยนแปลงและการกระทำหรืออาจเป็นการเปลี่ยนแปลง / การกระทำหลายอย่างในงานหรือไม่? เป็นงานที่กำหนดโดยพาร์ติชัน (เช่นงานหนึ่งงานต่อหนึ่งเวทีต่อพาร์ติชั่น) งานจะถูกกำหนดโดยโหนด (เช่นหนึ่งงานต่อขั้นต่อโหนด) หรือไม่? สิ่งที่ฉันคิด (เฉพาะคำตอบบางส่วนแม้ว่าจะถูก) ในhttps://0x0fff.com/spark-architecture-shuffleการสับเปลี่ยนจะถูกอธิบายด้วยภาพ และฉันก็ได้รับความประทับใจว่าเป็นกฎ แต่ละสเตจแบ่งออกเป็นงาน …
143 apache-spark 

14
Spark - โหลดไฟล์ CSV เป็น DataFrame หรือไม่
ฉันต้องการอ่าน CSV อย่างรวดเร็วและแปลงเป็น DataFrame และเก็บไว้ใน HDFS ด้วย df.registerTempTable("table_name") ฉันเหนื่อย: scala> val df = sqlContext.load("hdfs:///csv/file/dir/file.csv") ข้อผิดพลาดที่ฉันได้รับ: java.lang.RuntimeException: hdfs:///csv/file/dir/file.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 59, 54, 10] at parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:418) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:277) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:276) at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:658) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply$mcV$sp(Tasks.scala:54) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at …

2
จะเพิ่มคอลัมน์ค่าคงที่ใน Spark DataFrame ได้อย่างไร
ฉันต้องการเพิ่มคอลัมน์ใน a DataFrameโดยมีค่าตามอำเภอใจ (ซึ่งเหมือนกันสำหรับแต่ละแถว) ฉันได้รับข้อผิดพลาดเมื่อใช้withColumnดังนี้: dt.withColumn('new_column', 10).head(5) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-50-a6d0257ca2be> in <module>() 1 dt = (messages 2 .select(messages.fromuserid, messages.messagetype, floor(messages.datetime/(1000*60*5)).alias("dt"))) ----> 3 dt.withColumn('new_column', 10).head(5) /Users/evanzamir/spark-1.4.1/python/pyspark/sql/dataframe.pyc in withColumn(self, colName, col) 1166 [Row(age=2, name=u'Alice', age2=4), Row(age=5, name=u'Bob', age2=7)] 1167 """ -> 1168 return self.select('*', col.alias(colName)) 1169 1170 …

11
วิธีการแปลงวัตถุ rdd เป็น dataframe ใน spark
ฉันจะแปลง RDD ( org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]) เป็น Dataframe org.apache.spark.sql.DataFrameได้อย่างไร ผมแปลง dataframe เพื่อ RDD .rddใช้ หลังจากการประมวลผลฉันต้องการมันกลับมาใน dataframe ฉันจะทำสิ่งนี้ได้อย่างไร

6
จะจัดเรียงตามคอลัมน์จากมากไปหาน้อยใน Spark SQL ได้อย่างไร?
ฉันลองdf.orderBy("col1").show(10)แล้วแต่มันเรียงลำดับจากน้อยไปมาก df.sort("col1").show(10)ยังเรียงลำดับจากมากไปหาน้อย ผมมองใน StackOverflow และคำตอบที่ผมพบทั้งหมดล้าสมัยหรือเรียก RDDs ฉันต้องการใช้ดาต้าเฟรมดั้งเดิมในการจุดประกาย

3
Apache Spark: map vs mapPartitions?
อะไรคือความแตกต่างระหว่างRDD mapและmapPartitionsวิธีการ? และflatMapประพฤติชอบmapหรือmapPartitionsไม่? ขอบคุณ (แก้ไข) คืออะไรคือความแตกต่าง (ทั้งในเชิงความหมายหรือในแง่ของการดำเนินการ) ระหว่าง def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = { rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) }, preservesPartitioning = true) } และ: def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: …

9
ฉันจะเพิ่มคอลัมน์ใหม่ใน Spark DataFrame (โดยใช้ PySpark) ได้อย่างไร
ฉันมี Spark DataFrame (ใช้ PySpark 1.5.1) และต้องการเพิ่มคอลัมน์ใหม่ ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ไม่ประสบความสำเร็จ: type(randomed_hours) # => list # Create in Python and transform to RDD new_col = pd.DataFrame(randomed_hours, columns=['new_col']) spark_new_col = sqlContext.createDataFrame(new_col) my_df_spark.withColumn("hours", spark_new_col["new_col"]) ยังได้รับข้อผิดพลาดในการใช้สิ่งนี้: my_df_spark.withColumn("hours", sc.parallelize(randomed_hours)) ดังนั้นฉันจะเพิ่มคอลัมน์ใหม่ (ตาม Python vector) ไปยัง DataFrame ที่มีอยู่ด้วย PySpark ได้อย่างไร

5
จะกำหนดการแบ่งพาร์ติชันของ DataFrame ได้อย่างไร?
ฉันเริ่มใช้ Spark SQL และ DataFrames ใน Spark 1.4.0 ฉันต้องการกำหนดพาร์ติชันเนอร์ที่กำหนดเองบน DataFrames ใน Scala แต่ไม่เห็นวิธีการทำเช่นนี้ หนึ่งในตารางข้อมูลที่ฉันกำลังใช้งานประกอบด้วยรายการธุรกรรมตามบัญชีซิลิมาร์ดังตัวอย่างต่อไปนี้ Account Date Type Amount 1001 2014-04-01 Purchase 100.00 1001 2014-04-01 Purchase 50.00 1001 2014-04-05 Purchase 70.00 1001 2014-04-01 Payment -150.00 1002 2014-04-01 Purchase 80.00 1002 2014-04-02 Purchase 22.00 1002 2014-04-04 Payment -120.00 1002 2014-04-04 Purchase 60.00 …

12
วิธีตั้งค่าหน่วยความจำ Apache Spark Executor
ฉันจะเพิ่มหน่วยความจำที่พร้อมใช้งานสำหรับโหนดตัวดำเนินการ Apache spark ได้อย่างไร ฉันมีไฟล์ 2 GB ที่เหมาะสำหรับการโหลดไปยัง Apache Spark ฉันกำลังใช้งาน apache spark ในเครื่อง 1 เครื่องดังนั้นไดรเวอร์และตัวดำเนินการจึงอยู่ในเครื่องเดียวกัน เครื่องมีหน่วยความจำ 8 GB เมื่อฉันลองนับบรรทัดของไฟล์หลังจากตั้งค่าไฟล์ที่จะแคชในหน่วยความจำฉันได้รับข้อผิดพลาดเหล่านี้: 2014-10-25 22:25:12 WARN CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes. ฉันดูเอกสารที่นี่และตั้งค่าspark.executor.memoryเป็น4gใน$SPARK_HOME/conf/spark-defaults.conf UI แสดงตัวแปรนี้ถูกตั้งค่าใน Spark Environment คุณสามารถดูภาพหน้าจอได้ที่นี่ อย่างไรก็ตามเมื่อฉันไปที่แท็บ Executorขีด จำกัด หน่วยความจำสำหรับ Executor …

10
จะพิมพ์เนื้อหาของ RDD ได้อย่างไร?
ฉันกำลังพยายามพิมพ์เนื้อหาของคอลเลกชั่นไปยังคอนโซล Spark ฉันมีประเภท: linesWithSessionId: org.apache.spark.rdd.RDD[String] = FilteredRDD[3] และฉันใช้คำสั่ง: scala> linesWithSessionId.map(line => println(line)) แต่สิ่งนี้ถูกพิมพ์: res1: org.apache.spark.rdd.RDD [หน่วย] = MappedRDD [4] ที่แผนที่เวลา: 19 ฉันจะเขียน RDD ลงในคอนโซลหรือบันทึกลงในดิสก์เพื่อดูเนื้อหาได้อย่างไร


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