Как оптимизировать с помощью Column в Spark Scala? - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в 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!Но так как я сделал внутреннее объединение, я обязан сохранить этот третий столбец на моем фрейме данных, хотя в моем случае он бесполезен.Вот почему я использовал опускание после метода с колонкой.

Не могли бы вы помочь мне решить эту проблему?Заранее спасибо!

1 Ответ

0 голосов
/ 26 декабря 2018

Я думаю, что это не то, что делает его медленным.Но вы можете использовать withColumnRenamed так ...

result.withColumnRenamed("name", regexp_extract($"name_crypt", ".*?(\\d+)\\)$", 1))

Если вы новичок в Spark, многие люди сначала не распараллеливают задачи.Возможно, вы должны убедиться, что распараллеливание ваших задач хорошо.Проверьте num-executors и executor-memory

https://spark.apache.org/docs/latest/configuration.html

Вот пример команды spark-submit ...

spark-submit \

  --class yourClass \

  --master yarn \

  --deploy-mode cluster \  

  --executor-memory 8G \

  --num-executors 40 \

  /path/to/myJar.jar 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...