取一个现有的DataFrame并将其嵌套在一个具有特定结构的新框架中,该框架在scala spark中

时间:2019-02-22 19:57:15

标签: scala apache-spark dataframe

我正在为一个接受了DataFrame actualDF并且在某个时候运行actualDF.select("message.data.*", "message.headers.timestamp")的函数编写测试,并且我有message.data.*将选择的数据作为名为{ {1}}。因此,我需要做的是一个新的testDF,它在运行上述select语句时返回actualDF的数据以及伪造的时间戳。

这是testDF

中的数据
testDF

这就是我需要的假root |-- ACCEPTED_DATE: string (nullable = true) |-- BRAND_ID: string (nullable = true) |-- ...etc... 的样子:

actualDF

我已经尝试了一些方法来实现这一目标,但我认为我并没有接近正确的解决方案,我最接近的是:

root
 |-- message: struct (nullable = true)
 |    |-- data: struct (nullable = true)
 |    |    |-- ACCEPTED_DATE: string (nullable = true)
 |    |    |-- BRAND_ID: string (nullable = true)
 |    |    |-- ...etc...
 |    |-- headers: struct (nullable = true)
 |    |    |-- timestamp: string (nullable = true)

我希望将val empty = spark.emptyDataFrame val actualDF = empty.withColumn( "data", struct( testDF.columns.map(s => testDF.col(s)): _* ) ).withColumn("headers.timestamp", lit(1)) 粘贴到一个空的DataFrame上,但是它没有用,我认为无论如何还是一个不好的解决方案。

0 个答案:

没有答案