我有一个数据集,其中包含许多列(actuall 11000,但可能更多)和大约40000行。我想做的是将UDF应用于所有这些列(此UDF只是通过用字符替换来缩短列的字符串)。我的方法很好用,但实际上效率不高,因为我使用了for循环来迭代所有列。有没有机会使用foreach()函数或类似的东西来并行化所有11000列上的执行?

        sqlContext.udf().register("replaceStringByChar", replaceStringByChar, DataTypes.StringType);


        for (String c : ds.columns()) {
            ds = ds.withColumn(c, functions.callUDF("replaceStringByChar", ds.col(c)));
        }

最佳答案

我认为这样的事情应该起作用

ds.columns().foreach(column -> {
  System.out.println("Column" + column);
});

关于java - 如何遍历Spark中的数据集的所有列(Java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57480310/

10-16 05:45