如何从spark作业服务器使用NamedDataFrame

时间:2016-10-03 16:58:18

标签: apache-spark-sql spark-dataframe spark-jobserver

我在项目中使用了SJS,想知道SJS的NamedDataFrame是如何工作的。 我的第一个程序就是这样做的

val schemaString = "parm1:int,parm2:string,parm3:string,parm4:string,parm5:int,parm6:string,parm7:int,parm8:int"
val schema = StructType(schemaString.split(",").map(fieldName => StructField(fieldName.split(":")(0), getFieldTypeInSchema(fieldName.split(":")(1)),true)))   

val eDF1 = hive.applySchema(rowRDD1, schema)
this.namedObjects.getOrElseCreate("edf1", new NamedDataFrame(eDF1, true, StorageLevel.MEMORY_ONLY))  

我的第二个程序执行此操作来检索DataFrame。

 val eDF1: Option[NamedDataFrame]   = this.namedObjects.get("eDF1")

这里我只能使用Option。我如何将NamedDataFrame转换为Spark DataFrame?

是否有同等的东西?

this.namedObjects.get[(Int,String,String,String,Int,String,Int,Int)]("eDF1")

谢谢!

EDIT1: 确切地说,没有SJS持久性,这可以在df

上完成
eDF1.filter(eDF1.col("parm1")%2!==0)

如何从保存的namedObject执行相同的操作?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

以下适用于NamedDataFrame

作业1

this.namedObjects.getOrElseCreate("df:esDF1", new NamedDataFrame(eDF1, true, StorageLevel.MEMORY_ONLY))

Job2

val NamedDataFrame(eDF1, _, _) = namedObjects.get[NamedDataFrame]("df:esDF1").get

现在我可以在第二个作业上使用eDF1作为火花数据帧。