Как бороться с пробелами в именах столбцов, чтобы использовать функцию слияния в методе expr - PullRequest
0 голосов
/ 16 апреля 2019

Я работаю над функциональностью spark coalesce в моем проекте. Код отлично работает на столбцах без пробелов, но не работает на столбцах с интервалами.

e1.csv

id,code,type,no root
1,,A,1
2,,,0
3,123,I,1

e2.csv

id,code,type,no root
1,456,A,1
2,789,A1,0
3,,C,0

логический код

Dataset<Row> df1 = spark.read().format("csv").option("header", "true").load("/home/user/Videos/<folder>/e1.csv");

        Dataset<Row> df2 = spark.read().format("csv").option("header", "true").load("/home/user/Videos/<folder>/e2.csv");


Dataset<Row> newDS = df1.as("a").join(df2.as("b")).where("a.id== b.id").selectExpr("coalesce(`a.no root`,`b.no root`) AS `a.no root`");

newDS.show();


Что я пробовал

Dataset<Row> newDS = df1.as("a").join(df2.as("b")).where("a.id== b.id").selectExpr("""coalesce(`a.no root`,`b.no root`) AS `a.no root`""");

ожидаемый результат будет выглядеть как

no root
1
0
1

1 Ответ

0 голосов
/ 16 апреля 2019

Используя следующие критерии

val newDS = df1.as("a").join(df2.as("b")).where("a.id==b.id").selectExpr("coalesce(a.`no root`,b.`no root`) AS `a.no root`")

сгенерирует ожидаемый результат

+---------+
|a.no root|
+---------+
|        1|
|        0|
|        1|
+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...