2016-10-03 43 views
0

我为我的项目使用了SJS,并且想知道SJS中的NamedDataFrame如何工作。 我的第一个程序做这个如何使用火花作业服务器中的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)) 

我的第二个程序这样做是为了取回数据帧。

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相同的操作呢?

回答

0
+0

上面的例子并没有说如何检索一个Dataframe。以下是您示例中的一些行。你能否说如何在保持StructType的同时检索df1? val struct = StructType( StructField(“i”,IntegerType,true):: StructField(“b”,BooleanType,false):: Nil val df = sqlContext.createDataFrame(rows(sc),struct) namedObjects.update(“df1”,NamedDataFrame(df,true,StorageLevel.MEMORY_AND_DISK)) – user1384205

0

下面的作品上NamedDataFrame

作业1

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

作业2

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

现在我可以在第二上EDF1操作作为火花数据帧工作。

相关问题