Ked*_*hak 4 scala apache-spark
我编写了示例 spark-scala 程序,用于从数据帧创建 json 元素列表。当我使用 main 方法执行时,它返回空列表,但是当我在没有扩展应用程序的对象的情况下执行时,它返回包含记录的列表。scala 对象中的 extends App 和 main 方法有什么区别
object DfToMap {
def main(args: Array[String]): Unit = {
val spark: SparkSession = SparkSession.builder()
.appName("Rnd")
.master("local[*]")
.getOrCreate()
import spark.implicits._
val df = Seq(
(8, "bat"),
(64, "mouse"),
(27, "horse")
).toDF("number", "word")
val json = df.toJSON
val jsonArray = new util.ArrayList[String]()
json.foreach(f => jsonArray.add(f))
print(jsonArray)
}
}
Run Code Online (Sandbox Code Playgroud)
它将返回空列表但以下程序为我提供了包含记录的列表
object DfToMap extends App{
val spark: SparkSession = SparkSession.builder()
.appName("Rnd")
.master("local[*]")
.getOrCreate()
import spark.implicits._
val df = Seq(
(8, "bat"),
(64, "mouse"),
(27, "horse")
).toDF("number", "word")
val json = df.toJSON
val jsonArray = new util.ArrayList[String]()
json.foreach(f => jsonArray.add(f))
print(jsonArray)
}
Run Code Online (Sandbox Code Playgroud)
小智 5
TL;DR两个片段都不是正确的 Spark 程序,但一个比另一个更不正确。
您犯了两个错误,都在介绍性 Spark 材料中进行了解释。
由于其性质 Spark 不支持应用程序扩展App-快速入门 - 自包含应用程序
请注意,应用程序应定义 main() 方法而不是扩展 scala.App。scala.App 的子类可能无法正常工作。
Spark 不提供全局共享内存,因此不支持修改全局对象是一个闭包 - Spark 编程指南 - 理解闭包
| 归档时间: |
|
| 查看次数: |
1383 次 |
| 最近记录: |