我为我的项目使用了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相同的操作呢?
上面的例子并没有说如何检索一个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