将列的多个样本附加到spark中的数据框中

时间:2017-08-09 11:25:57

标签: scala apache-spark apache-spark-sql spark-dataframe user-defined-functions

我在 spark 列中有n(长度)值。我想创建一个k列的 spark dataframe(其中k是样本数)和m行(其中m是样本大小)。我尝试使用withColumn,但它无效。 Join通过创建唯一ID对我来说效率非常低。

e.g。 Spark列具有以下值:

102 320 11 101 2455 124

我想在数据框中创建2个分数为0.5的样本作为列。

因此采样数据框将类似于

sample1,sample2

320,101

124,2455

2455,11

让df有一个列UNIQUE_ID_D,我需要来自此列的k个样本。以下是k = 2

的示例代码
var df1 = df.select("UNIQUE_ID_D").sample(false, 0.1).withColumnRenamed("UNIQUE_ID_D", "ID_1")

var df2 = df.select("UNIQUE_ID_D").sample(false, 0.1).withColumnRenamed("UNIQUE_ID_D", "ID_2")

df1.withColumn("NEW_UNIQUE_ID", df2.col("ID_2")).show

由于withColumn无法访问df2列,因此无效。

通过在两个df中添加序列列(连接列),只能通过join df1和df2。

对于我的用例非常低效,因为如果我想要获取100个样本,我需要在一个循环中加入100次单个列。我需要对原始df中的所有列执行此操作。

我怎么能实现这个目标?

0 个答案:

没有答案