我正在尝试向spark数据框添加一个新列。添加的新列的大小将基于变量(例如 salt
)我将使用该列分解数据集以用于salted join的post。
目前,我正在使用连续 lit
在一个 array
函数,但它有一个问题,即它不能参数化,作为一个编码实践看起来最糟糕。我当前的实现如下所示。
int salt =3;
Dataset<Row> Reference_with_Salt_Col = Reference.withColumn("salt_array", array(lit(0), lit(1), lit(2)));
我已经参考并研究了各种方法,但它们似乎都不能解决java中的问题。 functions.typedlit
这种方法虽然在python/scala中有效,但在java中似乎不起作用。进一步传递一个数组或列表也无助于spark给出相同的错误。
我使用的是spark 2.2.0和Java1.8版本
1条答案
按热度按时间fjnneemd1#
你可以用
array
函数,但首先将列表中的每个元素转换为lit
. 使用示例map
流函数:生成包含从0到
salt - 1
,您可以使用IntStream.rangeClosed
这样地: