fork()之前为什么setsid()要守护进程?
基本上,如果我想从其控制终端分离进程并使其成为进程组负责人:我使用setsid().
在没有分叉之前这样做是行不通的.
为什么?
使用Spark 2.x,我似乎无法使用由case类组成的Row的RDD创建Dataframe.
它在Spark 1.6.x上运行良好,但在2.x运行异常时失败:
java.lang.RuntimeException: Timestamp is not a valid external type for schema of struct<seconds:bigint,nanos:int>
Run Code Online (Sandbox Code Playgroud)
之前是来自Catalyst的一堆生成代码.
这是片段(我正在做的简化版):
package main
import org.apache.spark.sql.{SparkSession, Row}
import org.apache.spark.sql.types.{IntegerType, LongType, StructField, StructType}
object Test {
case class Timestamp(seconds: Long, nanos: Int)
val TIMESTAMP_TYPE = StructType(List(
StructField("seconds", LongType, false),
StructField("nanos", IntegerType, false)
))
val SCHEMA = StructType(List(
StructField("created_at", TIMESTAMP_TYPE, true)
))
def main(args: Array[String]) {
val spark = SparkSession.builder().getOrCreate()
val rowRDD = spark.sparkContext.parallelize(Seq((0L, 0))).map {
case (seconds: Long, nanos: Int) => {
Row(Timestamp(seconds, nanos))
} …Run Code Online (Sandbox Code Playgroud)