gpt4 book ai didi

java - 在运行时动态过滤 Spark 列

转载 作者:行者123 更新时间:2023-12-02 10:00:47 25 4
gpt4 key购买 nike

我需要创建一个 Spark 过滤器语句,该语句对在运行时动态传递给它的列列表进行过滤。

我有一个 SQL 数据库表,其中有一列存储大数据表的列名列表。大数据表已分配给 Spark 数据集,我需要使用此列列表来检查列表中找到的任何数据集列是否存在数据问题(例如空值或空字符串),并返回受影响的行数计数。列列表将在运行时决定。列表的大小会有所不同。

public int returnRowCount (List<String> columnsAffected, Dataset<Row> dataset) {

return dataset.filter(dataset.col(columnsAffected.get(0)).isNotNull()
|| dataset.col(columnsAffected.get(0)).notEqual("")
|| dataset.col(columnsAffected.get(1)).isNotNull()
|| dataset.col(columnsAffected.get(1)).notEqual("")
|| etc ).count();

}

我需要该方法来获取任何列列表和任何数据集。我希望列表中受 null 或空字符串影响的任何列仅计算一次

最佳答案

您可以创建字符串过滤器表达式并在DataSets中使用该过滤器

public long returnRowCount (List<String> columnsAffected, Dataset<Row> dataset) {
String str = "";

for (String col : columnsAffected){
if (str != "")
str = str + String.format("or %1$s is null or %1$s == '' ", col);
else
str = String.format(" %1$s is null or %1$s == '' ", col);
}
return dataset.filter(str).count();
}

关于java - 在运行时动态过滤 Spark 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55655452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com