|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!pihelу меня сейчас установлена сборка от клаудеры, в которой нет Tez. Видимо придется поплатиться за свою лень и теперь как-то самому ставить tez по моим замерам Tez заметно медленее импалы. на клоудере вместо импалы, есть смысл пробовать Spark как движок к Hive (ставить через parcel), Tez на клоудере сомнительная затея.Вот ты же сам понимаешь гибкость. Если логика на SQL и данные в HDFS, я могу выбирать движок как минимум из Impala Spark Tez HiveMR Как я уже замечал раньше не все функции совместимы, но проблема решается использованием UDF. Когда не все решаемо на SQL => spark + scala. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 15:44 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
pihelYo.!, спасибо, тоже тогда буду пробовать на map reduce (в моем случае hive) посчитать агрегаты, а дальше что-то другое.Перечитай топик еще раз и не надо заниматься херней. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 15:46 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Ivan DurakYo.! map-reduce делает ETL, тяжелые расчеты и готовит широкие таблички, которые импалой смотрят отчетные системы и юзера. . Скажите, какие отчетные системы юзают импалу?? Самописные или ентерпрайз какие-то?С этого топик начинался (только с позиции разработчика). Всё что знает ODBC/JDBC может тянуть данные из Impala via SQL. В моем колхозе qlik, tableau, business objects и даже SSAS cube. Ведутся изыскания по построению решения на базе Kyvos OLAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 18:14 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshop Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
отличная демонстрация того как примитивная задача на несколько строк MR в спарке может превратиться в совершенно не читаемое нагромождение вермишели. посмотри, у тебя 2 месяца ушло на этот код, а теперь сколько человек из команды эту вермишель сможет прочесть ? а сколькие добавить условие 3) "число предыдущих original так чтоб их сумма не превышала заданный лимит" ? спарк штука безусловно интересная и перспективная, но пока достаточно сырая, в клоудере так и откровенно кастрированная. книги и примеры по спарку по прежнему полный примитив. как строить что-то сложнее word count никто не знает. документации считай нет, все примерчики в книгах запускают джобы в отдельных jvm, которые естественно получают отдельные sparkSession. что бы шарить sparkSession народ воротит какие-то мутные REST сервисы аля spark-jobserver , которые выглядят вообще не сексуально, не секьюрно. кроме этого код в том виде как у тебя, это был бы серьезный шаг назад в плане безопасности кода. в терминах оракла у тебя динамический sql, который компилятор никак не валидирует. вместо df.repartition($"position") я могу написать df.repartition($"pornosition") и компилятор не заметит косяка. то что MR все общение между мапперами и редюсарами делает через писанину на hdfs большой и жирный минус, но есть много задач, где скорость не единственный показатель. надежность выполнения, безопасность кода и наглядность зачастую имеют не меньшее значение. а спарк пока на том уровне развития когда еще очень просто вместо солюшена получить нечитаемую и не безопасную вермишель вместо кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 20:15 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!отличная демонстрация того как примитивная задача на несколько строк MR в спарке может превратиться в совершенно не читаемое нагромождение вермишели.Ты же отличаешь уровень представления от собственно логики. То же касается и способности считать строки. Если скала ты совсем не понимаешь, то пиши на java. Yo.!посмотри, у тебя 2 месяца ушло на этот кодДа какое там, я эту задачу с 2014 решал. И да, пришлось потратить больше часа на ответ тебе, это не типичный пост, который делаешь в рабочее время. Yo.!спарк штука безусловно интересная и перспективная, но пока достаточно сырая, в клоудере так и откровенно кастрированная. книги и примеры по спарку по прежнему полный примитив. как строить что-то сложнее word count никто не знает. документации считай нет, все примерчики в книгах запускают джобы в отдельных jvm, которые естественно получают отдельные sparkSession. что бы шарить sparkSession народ воротит какие-то мутные REST сервисы аля spark-jobserver , которые выглядят вообще не сексуально, не секьюрно.Да, штука сырая, с книгами проблемы. Зато по MR есть занимательное чтиво MapReduce Design Patterns . Для академического ознакомления самое оно. Отсутствие примеров в доке тоже хреново, что есть то есть. Yo.!кроме этого код в том виде как у тебя, это был бы серьезный шаг назад в плане безопасности кода. в терминах оракла у тебя динамический sql, который компилятор никак не валидирует. вместо df.repartition($"position") я могу написать df.repartition($"pornosition") и компилятор не заметит косяка.Мой код просто набросок для демонстрации разных подходов. Там многое можно и нужно изменять начиная от минимальной привязки к типам. Если изменить тип value на double то он перестанет работать. И заканчивая тем, что true functional developers совсем бы не оценили наличие у меня mutable var. Yo.!то что MR все общение между мапперами и редюсарами делает через писанину на hdfs большой и жирный минус, но есть много задач, где скорость не единственный показатель. надежность выполнения, безопасность кода и наглядность зачастую имеют не меньшее значение. а спарк пока на том уровне развития когда еще очень просто вместо солюшена получить нечитаемую и не безопасную вермишель вместо кода.Если не хватает памяти, то никто не мешает persist intermediate results в HDFS. Но если честно у меня такой необходимости не возникло. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 00:18 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopс книгами проблемыОказывается летом вышло пару книг о которых не знал. Scala and Spark for Big Data Analytics High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark Если что - обе pdf легко гуглятся в открытом доступе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 07:14 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopТы же отличаешь уровень представления от собственно логики. То же касается и способности считать строки. Если скала ты совсем не понимаешь, то пиши на java. я отличаю, потому у меня и подозрение, что теперь в такую конструкцию впихнуть оставшиеся условия пятничной задачки без большого изврата не выйдет. можно в ваш код добавить пункт 3: 3) "число предыдущих original так чтоб их сумма не превышала заданный лимит" dbms_photoshopОказывается летом вышло пару книг о которых не знал. Scala and Spark for Big Data Analytics High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark да, летом полистал. в первой впервые увидел не две строчки описания yarn-client режима, а целых четыре строчки, плюс картинки. пока это самое подробное описание, какое видел. но многое так и остается за кадром. я так и не нашел внятного описания что такое driver program, что делает spark-submit и прочие, минимально необходимые для пониманий концепций вещи. пока я так и не понял что делает spark-submit, думаю он в стиле map-reduce создает для yarn временные папки с /etc/conf туда упаковывает свои джарники, мои джарники и запускает нечто типа контейнера из такой папки. но внятного описания нигде нет. как дальше код попадает на воркеры тоже нет описаний, вероятно он шлет копию моего джарника каждому воркеру. вероятно, но хотелось бы однозначного описания этих базовых вещей, пусть не в доку, пусть в книге. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 11:01 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!можно в ваш код добавить пункт 3: 3) "число предыдущих original так чтоб их сумма не превышала заданный лимит"Я использовал бы подход как я продемонстировал для Оракла - добавил бы переменную и вспомогательную очередь. При случае поговорю с функциональными парнями у которых scala primary skill, как бы сделали они. Yo.!да, летом полистал. в первой впервые увидел не две строчки описания yarn-client режима, а целых четыре строчки, плюс картинки. пока это самое подробное описание, какое видел. но многое так и остается за кадром. я так и не нашел внятного описания что такое driver program, что делает spark-submit и прочие, минимально необходимые для пониманий концепций вещи. пока я так и не понял что делает spark-submit, думаю он в стиле map-reduce создает для yarn временные папки с /etc/conf туда упаковывает свои джарники, мои джарники и запускает нечто типа контейнера из такой папки. но внятного описания нигде нет. как дальше код попадает на воркеры тоже нет описаний, вероятно он шлет копию моего джарника каждому воркеру. вероятно, но хотелось бы однозначного описания этих базовых вещей, пусть не в доку, пусть в книге. Running Spark on YARN -> Preparations Optimizing YARN Mode in Unmanaged CDH Deployments ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 13:30 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopЯ использовал бы подход как я продемонстировал для Оракла - добавил бы переменную и вспомогательную очередь. При случае поговорю с функциональными парнями у которых scala primary skill, как бы сделали они. в оракле речь про этот вариант с аналитическими функциями ? в оракле с аналитикой вроде как раз второго прохода нет. если я верно понял мысль про "вспомогательную очередь", это будет второй проход. т.е. как раз то, что я и хотел продемонстрировать - простая задача, но со спарком уже требуются не столь элегантные нагромождения с повторным проходом или ребята с хитрыми скилами. плюс решение с двумя прохожденями уже может и не выиграть у MR в плане эффективности, т.е. на этой замечательной задачки MR может выиграть не только в простоте и читаемости. dbms_photoshop Running Spark on YARN -> Preparations Optimizing YARN Mode in Unmanaged CDH Deployments ? свои вопросы там не прояснил: "The configuration contained in this directory will be distributed to the YARN cluster so that all containers used by the application use the same configuration." - тут речь о том, что инфо содержащееся в папках будет distributed, а каким образом нифига не сказано. с моим джарником тоже не ясно, в "Optimizing YARN Mode in Unmanaged CDH Deployments" речь как я понял про голый спарк, а не джарники с моим кодом. причем в моем случае у меня managed by Cloudera Manager вариант и как я понимаю spark-assembly.jar сама клоудера подсовывает как-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 14:44 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!, 1. Речь про этот вариант 20559260 . Там один проход и ты сам его на него даже ссылался. 2. Там речь про бинарники и спарка и прикладухи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 14:51 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshop1. Речь про этот вариант 20559260 . Там один проход и ты сам его на него даже ссылался. ок, тогда вопрос как именно этот вариант в спарке будет реализован. решение в лоб было бы датасет по "select * from t order by id" и проход по нему, но если я верно понимаю концепции спарк это плохо смаштабируется. в варианте rdd.mapPartitions(func, true) запуститься тьма воркеров которые запустят func в параллель, а в решении в лоб получиться лишь один поток, обрабатывающий данные из датасета dbms_photoshop2. Там речь про бинарники и спарка и прикладухи. клоудера1. Manually upload the Spark assembly JAR file to HDFS: $ hdfs dfs -mkdir -p /user/spark/share/lib $ hdfs dfs -put SPARK_HOME/assembly/lib/spark-assembly_*.jar /user/spark/share/lib/spark-assembly.jar You must manually upload the JAR each time you upgrade Spark to a new minor CDH release. manually upload the JAR each time you upgrade Spark - тут речь лишь о JARs спарка ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2017, 15:49 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopIvan Durakпропущено... Скажите, какие отчетные системы юзают импалу?? Самописные или ентерпрайз какие-то?С этого топик начинался (только с позиции разработчика). Всё что знает ODBC/JDBC может тянуть данные из Impala via SQL. В моем колхозе qlik, tableau, business objects и даже SSAS cube. Ведутся изыскания по построению решения на базе Kyvos OLAP. ну например business objects на HIVE sql не взлетел от слова совсем. Автогенеренные зубодробительные sql от BO - не по зубам хайву. Что-то про спарк тоже сомневаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 14:54 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!ок, тогда вопрос как именно этот вариант в спарке будет реализован. решение в лоб было бы датасет по "select * from t order by id" и проход по нему, но если я верно понимаю концепции спарк это плохо смаштабируется. в варианте rdd.mapPartitions(func, true) запуститься тьма воркеров которые запустят func в параллель, а в решении в лоб получиться лишь один поток, обрабатывающий данные из датасета Вроде как repartition сделает shuffliung секций по нодам, потом sortWithinPartitions выполнит сортировку порций данных. Вставлять "order by" в запрос не имеет при таком сценарии никакого смысла. Более того, если присмотреться, в scala-решении нигде не используется SQL и данные читаются через spark.read, а не spark.sql как здесь 20604267 . С другой стороны, подходы можно миксовать, как уже было сказано, но надо понимать зачем. Функцию func которая, собственно, реализует всю логику можно переписать на функциональный манер (без переменных) примерно так. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Подозреваю что на это ты скажешь что тоже нечитаемый спагетти код. Хотя очевидный недостаток что при изменении типов в таблице может перестать работать, но я показал просто как заготовку. Потом если хочется считать еще колонку count_o, то смотрим на код здесь ( 20559260 ) и реализуем идентичный подход c очередью, как уже тоже было сказано. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
результат Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Yo.!клоудераНе желаешь пройти и по первой ссылке? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:05 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Ivan Durakну например business objects на HIVE sql не взлетел от слова совсем. Автогенеренные зубодробительные sql от BO - не по зубам хайву. Что-то про спарк тоже сомневаюсьНу Hive можно переключить с ипользования MR на spark как уже было сказано 20588925 . Скорее всего это увеличит скорость в разы. Мне big data отчасти и нравится тем, что надо понимать что ты пишешь. Если для развитой СУБД много какие говно-запросы отработают за приемлемое время благодаря query transformations и индексам, то это не случай для bigdata. Query transformations здесь тоже имееются, но сильно урезанные пока. Например, если нет понимания, что для такого запроса не может быть hash join (без concatenation), то можно винить Impala что она работает вечность. Код: plaintext 1. 2.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:21 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopПодозреваю что на это ты скажешь что тоже нечитаемый спагетти код. это же эмоди ! Код: java 1.
но сейчас я хочу привязаться к другому - тут же два прохода замаскировано: Код: java 1.
тут явно ожидается, что уже построена четвертая колонка prev_o_value, которая береться из более ранниих заклинаний. т.е. нужно сначала выполнить все заклинания для df2 Код: java 1.
т.е. сначала он все прочтет, отсортирует, высчислит prev_o_value, а представленный код с mapPartitions(func, true) инициирует уже второй проход. dbms_photoshopYo.!клоудераНе желаешь пройти и по первой ссылке? и по первой сходил, но как уже писал Yo.!свои вопросы там не прояснил: "The configuration contained in this directory will be distributed to the YARN cluster so that all containers used by the application use the same configuration." - тут речь о том, что инфо содержащееся в папках будет distributed, а каким образом нифига не сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 23:26 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!это же эмоди !Эмодзи было использовано чтоб подсказать скале тип результата. Yo.!т.е. сначала он все прочтет, отсортирует, высчислит prev_o_value, а представленный код с mapPartitions(func, true) инициирует уже второй проход.Насколько я понимаю ты немного значешь PL/SQL и нет сомнений касательно того, что время выполнения в Оракле для приведенного алгоритма линейное. Если честно вообще непонятно почему ты думаешь, что есть какие-то порблемы со сложностью алгоритма в скала. Нет никаких двух проходов, нет никакой маскировки. Помедитируй над тем как работает scalLeftВо втором случае идет использование x1._3, хотя на входе только две "колонки" Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Только желтая строка имеет отношение к спарк. Все остальное pure scala. Диалог опять перестает быть содержательным. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2017, 12:51 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopЕсли честно вообще непонятно почему ты думаешь, что есть какие-то порблемы со сложностью алгоритма в скала. Нет никаких двух проходов, нет никакой маскировки. потому, что разговор идет не о скале, а о фремворке spark и его работе. не важно каким диалектом мы реализуем df2 и функцию - скалой, джавой или питоном. спарк превратит датафремы в DAG граф из RDD. df2 будет одним RDD, df с функцией будет другим RDD. это не фишка скалы, это фишка фрейворка. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2017, 15:10 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!, В решении нет df2. Это уже переходит в клоунаду. Прости если я тебя задел. И, конечно, зря я выступал против написания дубовой логики на map reduce. Каждый программирует в меру своих способностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2017, 15:25 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopВ решении нет df2. Это уже переходит в клоунаду. Прости если я тебя задел. И, конечно, зря я выступал против написания дубовой логики на map reduce. Каждый программирует в меру своих способностей. прости, но в твоем говнокоде val prev_o_value = if (x1.getString(2) == "original") (x1.getInt(3)) else (x1.getInt(4)); ожидается пятая колонка с предыдущим значением. если бы ты не говнокодил и хотя бы имена колонок писал, сам бы в этой вермишели увидел. в исходных данных этой колонки нет, ее нужно вычислить dbms_photoshop данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
предыдущее значение у тебя вычисляет df2. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2017, 15:47 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
Yo.!... Жги еще. Не думал что ты в итоге окажешься так жалок. Попробуем для самых маленьких. Предположим что ты смог создать таблицу. Запускаешь spark-shell. Копируешь туда код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Только не нужно прикапываться к schema и прочему. Это для простоты, чтоб не использовать декодеры. Хотя кому я объясняю... человеку которому мерещатся df2 и который не в состоянии сделать copy&paste. Вместо трех точек догадаешься написать полный путь? Ну слава Богу. Если scanLeft все-таки не для твоих мозгов, поковыряй другие подходы. PS. Я загляну в топик через два-три месяца снова, может здесь появится кто толковый. PPS. Даже не знаю почему тебя банили, такой приятный, эрудированный и конструктивный собеседник. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2017, 16:26 |
|
Инструмент для работы с SQL движками Impala/Hive
|
|||
---|---|---|---|
#18+
dbms_photoshopЕсли скала ты совсем не понимаешь, то пиши на java. А мне приходится на python писать. (( ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2017, 00:39 |
|
|
start [/forum/topic.php?fid=48&msg=39525442&tid=1856652]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 288ms |
0 / 0 |