Производительность запросов в оболочке spark-submit vs hive - PullRequest
1 голос
/ 27 февраля 2020

У меня проблемы с отладкой, почему простой запрос к внешней таблице hive (с поддержкой DynamodB) занимает 10 минут к северу с помощью spark-submit, а в оболочке куста это занимает всего 4 секунды.

Внешняя таблица Hive это относится к таблице Dynamodb, скажем Employee [id, name, ssn, dept]. id - это ключ раздела, а ssn - ключ диапазона.

Использование aws emr 5.29, spark, hive, tez, has oop. 1 мастер, 4 ядра, m5.l

в оболочке улья: select name, dept, ssn from employee here id='123/ABC/X12I' возвращает результаты через 4 секунды.

Теперь, допустим, у меня есть следующий код в code.py (игнорируя import)

spark = SparkSession.builder.appName("test").enableHiveSupport().getOrCreate()
data=spark.sql("select name, dept, ssn from employee here id='123/ABC/X12I'")
# print data or get length

Я отправляю вышеупомянутое на главном узле как:

spark-submit --jars /pathto/emr-ddb-hive.jar, /pathto/emr-ddb-hadoop.jar code.py

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

В оболочке улья я сделал SET; чтобы посмотреть параметры, которые использует оболочка куста и есть gazillion.

Я также попробовал способ поиска boto3 DynamodB, и это намного быстрее, чем мой простой py sql, чтобы инициировать отправку.

Мне не хватает основ ... Любая идея или направление оценили.

1 Ответ

0 голосов
/ 04 марта 2020

Я выполнял агрегацию, когда пытался печатать, выполняя collect () . Я читал об этом, но, не понимая, что это было так плохо (мудрый выбор времени). Я также закончил тем, что провел еще несколько экспериментов, таких как take (n) limit 1 .

...