在 JAVA 中使用 Spark SQL 映射数据集中的字段值

Map field values in Dataset using Spark SQL in JAVA

在写入 elasticsearch 之前,在我的数据集中,我需要映射列的某些值并替换它们,例如

  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"))

希望对您有所帮助