【发布时间】:2020-01-20 10:39:54
【问题描述】:
因为我是新手,所以我有一个简单的疑问
我必须创建一个空数据框,稍后我必须根据某些条件填充它。
我已经经历了许多创建空数据框的问题,但是以下这些方法之间有什么区别
我所接近的我不知道它是否正确
def function1(df: DataFrame): DataFrame = {
var newdf:DataFrame= null;
if(!x._2(0).column.trim.isEmpty){
newdf= spark.sql("SELECT f_name,l_name FROM tab1");
}else{
newdf= spark.sql("SELECT address,zipcode FROM tab1");
}
newdf
}
上述方法在本地运行时没有给我任何错误,不知道何时涉及集群。
但我发现了其他方法,他们创建了一个具有指定架构的空数据框,如下所示:
val my_schema = StructType(Seq(
StructField("field1", StringType, nullable = false),
StructField("field2", StringType, nullable = false)
))
val empty: DataFrame = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], my_schema)
但我的问题是我没有预定义的架构,并且生成的数据框可能是与运行时相关的任何架构,我不知道架构的外观。
如果我采用方法 1 或任何我遗漏的东西,有什么问题吗?
【问题讨论】:
-
欢迎来到 SO!您能否分享您需要如何/何时填充 DataFrame?这样我们就有更多的内容来讨论如何处理模式。
-
我有一个
Map[String,String],我正在根据值进行迭代,即如果值为空,则如果条件将执行,否则将执行。同样,我的地图可能包含 n 号。 k 和 v,我想要最后一个结果数据帧。 -
编辑了问题有一些错字
-
你面临的错误是什么......从你的问题中不清楚
-
val df = spark.emptyDataFrame.. 将创建空数据框而不指定架构
标签: scala apache-spark