在 JAVA 中使用 Spark SQL 映射数据集中的字段值
Map field values in Dataset using Spark SQL in JAVA
在写入 elasticsearch 之前,在我的数据集中,我需要映射列的某些值并替换它们,例如
- "REJECT" 到 "PENDING",
- "UNKNOWN" 到 "FAILED" 等..
Dataset<Row> finalData = data.select(
data.col("cus_ref").as("key"),
functions.struct(
data.col("username").as("user_id"),
data.col("channelId").as("channel"),
data.col("country_code").as("country"),
data.col("status").as("latest_status"),
data.col("acc_number").as("account"),
data.col("amt").as("amount"),
data.col("currency"),
data.col("processing_date"),
data.col("sub_date").as("received_time"),
data.col("product_code").as("product"),
data.col("name")).as("summary"));
对于 data.col("status"),我如何映射值并即时替换它们?
您可以使用 'when-otherwise' 个子句:
val updateDF = finalData.withColumn("latest_status",
when(col("latest_status") === "REJECT", "PENDING")
.when(col("latest_status") === "UNKNOWN", "FAILED")
.otherwise("foobar"))
希望对您有所帮助
在写入 elasticsearch 之前,在我的数据集中,我需要映射列的某些值并替换它们,例如
- "REJECT" 到 "PENDING",
- "UNKNOWN" 到 "FAILED" 等..
Dataset<Row> finalData = data.select(
data.col("cus_ref").as("key"),
functions.struct(
data.col("username").as("user_id"),
data.col("channelId").as("channel"),
data.col("country_code").as("country"),
data.col("status").as("latest_status"),
data.col("acc_number").as("account"),
data.col("amt").as("amount"),
data.col("currency"),
data.col("processing_date"),
data.col("sub_date").as("received_time"),
data.col("product_code").as("product"),
data.col("name")).as("summary"));
对于 data.col("status"),我如何映射值并即时替换它们?
您可以使用 'when-otherwise' 个子句:
val updateDF = finalData.withColumn("latest_status",
when(col("latest_status") === "REJECT", "PENDING")
.when(col("latest_status") === "UNKNOWN", "FAILED")
.otherwise("foobar"))
希望对您有所帮助