Java中如何将Spark DataFrame列值转换为小写/大写?
在Java Spark中实现DataFrame列值转小写
需求说明
输入DataFrame:
name | country | src | city | debit --------------------------------------------- "foo"| "NZ" | salary | "Auckland" | 15.0 "bar"| "Aus" | investment | "Melbourne"| 12.5
期望输出(将city列值转为小写):
name | country | src | city | debit ------------------------------------------------ "foo"| "NZ" | salary | "auckland" | 15.0 "bar"| "Aus" | investment | "melbourne"| 12.5
Java实现方案
在Spark Java API中,可借助org.apache.spark.sql.functions提供的lower()函数,配合DataFrame.withColumn()方法完成列值转换:
1. 导入必要类
确保引入Spark SQL相关工具类:
import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; import static org.apache.spark.sql.functions.col; import static org.apache.spark.sql.functions.lower;
2. 核心实现代码
// 初始化SparkSession(本地测试用,生产环境可调整配置) SparkSession spark = SparkSession.builder() .appName("ColumnValueLowercase") .master("local[*]") .getOrCreate(); // 假设df为你的输入DataFrame Dataset<Row> df = ...; // 将city列值转为小写,替换原列 Dataset<Row> resultDf = df.withColumn("city", lower(col("city"))); // 打印验证结果 resultDf.show();
代码说明
lower(col("city")):接收指定列对象,将列内所有字符串值转换为小写,返回新的Column对象withColumn("city", ...):用转换后的Column覆盖原city列;若需保留原列,可指定新列名,比如withColumn("city_lower", lower(col("city")))
内容的提问来源于stack exchange,提问作者Monu
相关产品推荐
相关产品推荐

