Apache Spark使用具有相同列名(具有不同数据)的表连接数据集

时间:2018-01-19 10:52:14

标签: java apache-spark apache-spark-sql

我希望连接多个数据集,这些数据集具有一些具有相同名称的列,同时具有不同的数据。这可以在转换为dataframe时重命名数据集列。但是在使用数据集时是否可以使用重命名或为列名设置前缀。

Dataset<Row> uct = spark.read().jdbc(jdbcUrl, "uct", connectionProperties);
Dataset<Row> si = spark.read().jdbc(jdbcUrl, "si", connectionProperties).filter("status = 'ACTIVE'");
Dataset<Row> uc = uct.join(si, uct.col("service_id").equalTo(si.col("id")))

uc 将包含同名&#39; code&#39; 的列,然后很难从 uct.code获取代码值 si.code

1 个答案:

答案 0 :(得分:1)

Dataframe是Dataset的别名。所以实际上你在代码中使用了一个数据帧。如果要保留两个具有相同名称的列,则必须在使用“withColumnRenamed”选项执行连接之前重命名其中一列。