当我DataFrame在Spark SQL中创建一个JSON文件时,如何在调用之前判断给定列是否存在.select
示例JSON模式:
{
"a": {
"b": 1,
"c": 2
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的:
potential_columns = Seq("b", "c", "d")
df = sqlContext.read.json(filename)
potential_columns.map(column => if(df.hasColumn(column)) df.select(s"a.$column"))
Run Code Online (Sandbox Code Playgroud)
但我找不到一个好的功能hasColumn.我得到的最接近的是测试列是否在这个有点笨拙的数组中:
scala> df.select("a.*").columns
res17: Array[String] = Array(b, c)
Run Code Online (Sandbox Code Playgroud) 我正在从现有数据框架创建一个新的Dataframe,但需要在这个新DF中添加新列(下面代码中的"field1").我该怎么办?工作示例代码示例将不胜感激.
val edwDf = omniDataFrame
.withColumn("field1", callUDF((value: String) => None))
.withColumn("field2",
callUdf("devicetypeUDF", (omniDataFrame.col("some_field_in_old_df"))))
edwDf
.select("field1", "field2")
.save("odsoutdatafldr", "com.databricks.spark.csv");
Run Code Online (Sandbox Code Playgroud)