Проблемы производительности Spark Scala с командами take и InsertInto - PullRequest
0 голосов
/ 15 января 2019

Пожалуйста, посмотрите на прикрепленный скриншот.

Я пытаюсь улучшить производительность своей работы Spark, и для выполнения действия по выполнению действия на фрейме данных требуется почти 5 минут.

Я использую команду take, чтобы убедиться, что в фрейме данных есть какие-то записи, и если он присутствует, я хочу перейти к дальнейшей обработке.

Я пытался взять и посчитать и не вижу большой разницы во времени для исполнения.

Другой сценарий - это когда требуется около 10 минут, чтобы записать фрейм данных в таблицу кустов (в нем не более 200 строк и 10 столбцов).

df.write.mode ( "добавить"). PartitionBy ( "Дата"). InsertInto (имя_таблицы)

Пожалуйста, предложите, как мы можем минимизировать время, затрачиваемое на его взятие и вставку в таблицу улья.

enter image description here

Обновление:

Вот мой иск искомки: spark-submit --master yarn-cluster --class com.xxxx.info.InfoAssets --conf "spark.executor.extraJavaOptions = -XX: + UseCompressedOops -XX: + PrintGCDetails -XX : + PrintGCTimeStamps -Djava.security.auth.login.config = kafka_spark_jaas.conf "--files /home/ngap.app.rcrp/hive-site.xml,/home//kafka_spark_jaas.conf,/etc/security/keytabs /ngap.sa.rcrp.keytab --jars /usr/hdp/current/spark-client/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/current/spark-client/lib/datanucleus -core-3.2.10.jar, / usr / hdp / current / spark-client / lib / datanucleus-rdbms-3.2.9.jar --executor-memory 3G --num-executors 3 --executor-cores 10 / home / InfoAssets / InfoAssets.jar

  • Детали кода:

это простой фрейм данных, который содержит 8 столбцов, содержащих около 200 записей, и я использую следующий код для вставки в таблицу кустов.

df.write.mode ("append"). PartitionBy ("partkey"). InsertInto (hiveDB + "." + TableName)

Спасибо, Бабы

1 Ответ

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

Не используйте count перед записью, если в этом нет необходимости, и если ваша таблица уже создана, используйте Spark SQL для вставки данных в таблицу Hive Partitioned.

spark.sql("Insert into <tgt tbl> partition(<col name>) select cols,partition col from temp_tbl")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...