你好,
我想创建一个包含多个组实例的列,其中每个组包含一个标签和一个groupValue。
import org.apache.spark.sql.functions.col
col("groupingCriteria"(0)("label"))
col("groupingCriteria"(0)("groupValue"))
Intellij在'标签'或者' groupValue' :"应用程序不接受参数"
当我使用$ spark of SparkSession.implicits._时,我没有此消息但我不想使用此关键字
有什么想法吗?
答案 0 :(得分:0)
通过查看您的要求,您似乎需要一个可以是ArrayType的列“组”。您可以先为此创建架构,然后应用于您的DataFrame。
以下代码创建一个包含两个父级别列id,group的模式(其中每个组根据您的要求包含一个标签和一个groupValue)。然后将模式推断为空的DataFrame,在实际情况下将被适当的数据替换。它可能会对你有帮助。
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{ArrayType,StringType,StructField,StructType}
import org.apache.spark.sql.functions.col
import org.apache.spark.sql.Row
//build a spark session
val sparkSession = SparkSession.builder()
.appName("myApp")
.getOrCreate()
val sc = sparkSession.sparkContext
val myDfSchema = StructType(Seq(
StructField("id", StringType, true),
StructField("group", ArrayType(StructType(Array(
StructField("label", StringType, true),
StructField("groupValue", StringType, true)))), true)))
val myDf = sparkSession.createDataFrame(sc.emptyRDD[Row], myDfSchema)
架构如下所示。
scala> myDf.printSchema
root
|-- id: string (nullable = true)
|-- group: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- label: string (nullable = true)
| | |-- groupValue: string (nullable = true)