Я новичок в Spark и Scala и хочу оптимизировать запрос, который я написал для Spark, который очень очень тяжелый и медленный (моя база данных огромна и содержит много данных).
Iиметь первую таблицу "city_ID":
ID City_CODE
1 10
2 11
3 12
и вторую таблицу "city_name", которая имеет общее поле с первой:
City_Code City_NAME_CRYPT
10 ADFKJV - Paris
11 AGHDFBNLKFJ - London
12 AGZEORIUYG- Madrid
Что я хочу иметь в своемокончательный результат - идентификатор города и его собственное имя (которое я могу вычислить с помощью регулярного выражения в поле city_name) БЕЗ ДРУГИХ ДАННЫХ.Итак, это должно выглядеть так:
ID NAME
10 Paris
11 London
12 Madrid
Вот мой текущий код:
val result = spark.sql(""" SELECT t1.id, t2.city_name_crypt AS name_crypt
FROM table1 t1
INNER JOIN table2
on t1.city_code = t2.city_code""").withColumn("name", regexp_extract($"name_crypt", ".*?(\\d+)\\)$", 1)).drop($"name_crypt").show()
Большая проблема для меня заключается в том, что я просто хочу иметь 2 столбца, а не 3!Но так как я сделал внутреннее объединение, я обязан сохранить этот третий столбец на моем фрейме данных, хотя в моем случае он бесполезен.Вот почему я использовал опускание после метода с колонкой.
Не могли бы вы помочь мне решить эту проблему?Заранее спасибо!