LINUX.ORG.RU

Хочу в аналитику и бигдату. Какой язык и инструменты выбрать?

 , , , ,


2

1

Ах, ЛОР!

Ещё раз: меня интересует не только ЯП, но и библиотеки и БД для конечного использования.

Какой язык программирования, библиотеки (очень важно) и базу данных выбрать для анализа данных, построения графов связей, работы с синтаксисом и морфологией?

Я склоняюсь к получению данных из веб-сервисов при помощи selenium с python-обвязкой (всё-равно тут будет тормозить браузер, а не питон), а яву в хандупе для последующего анализа. Только вот в библиотека проблема, прошу подсказать.

Имеет ли смысл выбрать R?

Также прошу подсказать годные статьи книги по сабжу.

Я склоняюсь к получению данных из веб-сервисов при помощи selenium

Ты видимо даже близко не представляешь на сколько это все будет тормозить? Зачем селениум?

pi11 ★★★★★
()
Ответ на: комментарий от ktulhu666

Я твоих задач не знаю поэтому и советовать что-то конкретное не могу. Просто говорю, что селениум дико тормозит. Я его юзал на гугло-плюсе. Жрет память и проц, жутко медлено и до кучи зависает. Поэтому как селениумом получить много-много данных - не представляю.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Поставим вопрос иначе: как БЕЗ селениума получить много-много данных без много-много программистов? Давайте начнём с того, очень много ресурсов либо вообще не работают без кук (и даже авторизации) и JS нормально, либо там такая каша кода на каждой страницы, что ни в один регексп их не запихнешь. В теории, можно попробовать юзать PhantomJS с селениумом, но он очень нестабильный и многих функций не поддерживает.
Я уж молчу о том, что любые регекспы и системы парсинга слетят нафиг при любой нестандартной ситуации (включая обновления дизайна, даже если оно для юзера незаметно).
Тем более, я обладаю возможностью запускать свой софт на десятках серверов параллельно. Кстати, selenium GRID позволяет делать это без особых проблем.

Но меня куда более волнует вопрос последующей обработки данных, а не их получения.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от GoodPerson

Ну зачем тебе Hadoop, откуда ты кластер и столько данных возьмешь. Начни с малого.

Кластер уже есть, я ж админом работаю.

И если начинать с малого, то с чего начать?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от GoodPerson

А Вы сами что-нибудь из это пробовали? У панд малуал с целую книгу. Кстати, я правильно понимаю, что панды надо юзать для препроцессинга данных, а ждупитер - как это GUI в браузере для моих приложений?
А для процессинга и работы с графами что юзать?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Если обязательно нужен JS и авторизация и на сколько я понял это должно быть средство достаточно универсальное - то я не знаю, я бы с таким даже заморачиваться не стал. Ты для каждого ресурса будешь пользователя заводить? А если его забанят? Нового будешь регить?

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Ты для каждого ресурса будешь пользователя заводить? А если его забанят? Нового будешь регить?

В данном случае это имеет смысл.

Допустим, у нас веб-страница без JS и авторизации. Что тогда юзать, чтобы оно от каждого чиха не разваливалось?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от shayger

«Эта возможность не нужна абсолютно всем» годное выражение, записал. :) Надо будет бздунам почаще писать так...

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Опять же зависит от конкретных задач. Для общего случая сложно но можно идти по такому пути: 1. Парсим HTML, выделяем блоки с данными. 2. Анализируем какие данные нужны нам (выкидываем повторяю шиеся на всех страницах, явно служебные и т.д) Подробнее лень писать, я щас с телефона. Погугли. И да регекспы не нужны тут.

pi11 ★★★★★
()
Ответ на: комментарий от ktulhu666

Кстати для селениума тебе придется писать тот же код для каждого источника. Он поможет только в том, что иногда для него будет проще написать скрипт, в том плане что не нужно анализировать что делает JS на каждом конкретном сайте.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Я не совсем понял, как Вы так хитро без регекспов собираетесь «блоками» вырывать контент. Прошу пояснить. Какая-то хитрая библиотека?

У меня создаётся впечатление, что Вы с сайтами реальными не работали в плане парсинга, либо не поняли возможностей селениума в плане DOM, X-Path, CSS селектинга.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ya-betmen

нафига тебе хадуп если данные ты селениумом получать хочешь?

Над набором данных я буду совершать не один анализ же, ПО будет дописываться, а вот база - постоянно расти. Морфологический парсинг и нахождение связей - это очень дорогие операции на больших объёмах данных.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ya-betmen

База всегда (почти) растёт со временем, вопрос в скорости, которую может обеспечить способ её добычи.

Не вижу проблем в селениуме: я уже говорил, что могу запускать его на кластере (на работе). Причём работать он может постоянно. За пару месяцев база будет огроменной.
Мало того, Вы, видимо, не знаете, что селениум может даже на одной машине запускать множество браузеров.
Тут параллельное приложение с самого начала будет.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от zolden

А давай без фантазий: сколько данных будет по факту?

Ну давайте посчитаем: 10Кб со страницы, в день 10 (страниц в секунду на одном сервере)*30(серверов)*3600(час)*24(часов в сутках)*10(вес страницы в Кб)/1024 = 253125 Мб в сутки.
Т.е. за два месяца будет 14831 Гб. Со сжатием, думаю, около 3-5 Тб.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от umren

хочешь бигдату? собирай данные из /dev/random/

Иди в МДК лалок троллировать, не лезь в мой ЛОР.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Т.е. за два месяца будет 14831 Гб. Со сжатием, думаю, около 3-5 Тб.

плюсану, оракл вполне жует такие базули и все хорошо. обычных селектов хватает.

Rastafarra ★★★★
()

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

anonymous
()
Ответ на: комментарий от anonymous

Кстати, новомодные сайты, которые без js не работают, обычно имеют REST api, а javascript это просто клиент для него.

Можно это api напрямую дергать, будет намного эффективней.

pawnhearts ★★★★★
()

посмотри jsoup + любой жвм-язык для граббинга данных и поклания в базу
при прилежном программирование результат предполагается эфективнее чем на питоне

для анализа не знаю, говорят r, да, ну или что-то r-подобное http://incanter.org/ например

anonymous
()

Имеет ли смысл выбрать R?

Будет зватать и LibreOffice Calc, пока не соизволишь написать область анализа данных. R не для всего подходит.

bookman900 ★★★★★
()

У этих сайтов, с которых собирать, нету апи?

jori
()

Советую пройти nanodegree по анализу данных на Udacity. Там тебе объяснят, что чем делать и всё остальное. Я сам больше из ML поэтому могу ответить приблизительно: в бигдате чеще используют R, чем Python, а Apache Spark становится популярней, чем Hadoop. Графы можно строить множеством пакетов и либ, у каждого своя специфика, нет смысла даже перечислять, зависит от задачи. У Udacity визуализация тоже дается (на dimple or d3.js) Книги/статьи по бигдате.... обычно это список из 20-50 книг на английском, которые все «надо обязательно прочесть». Я б не рисковал с такими просьбами.

Bell
()
Ответ на: комментарий от ktulhu666

Давайте начнём с того, очень много ресурсов либо вообще не работают без кук (и даже авторизации) и JS нормально

Что собрался парсить? СПА? Все контентные сайты предоставляют данные для гуглботов, которые не умеют web2.0 Если сайт и обвешен JS, то в итоге все сводится к HTTP протоколу.

что ни в один регексп их не запихнешь

Регекспами парсят только ньюфаги, нормальные пацаны юзают xpath.

системы парсинга слетят нафиг при любой нестандартной ситуаци

Сделай логи и следи где слетают.

Но меня куда более волнует вопрос последующей обработки данных, а не их получения.

Для этого люди годами учатся в ВУЗах, а ты тут хотел за неделю разобраться? Иди на курсеру и учись, параллельно на amazon закупайся книгами.

foror ★★★★★
()
Ответ на: комментарий от ktulhu666

253125 Мб в сутки

У меня для тебя плохие новости. Это не бигдата! Хадуп тут оверхед.

Ещё тебе действительно надо обрабатывать данные в режиме реального времени?

itn ★★★
()
Последнее исправление: itn (всего исправлений: 1)
Ответ на: комментарий от ktulhu666

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

в зале смех, переходящий в истерику

anonymous
()

Лох какой-то.

anonymous
()
Ответ на: комментарий от ktulhu666

У меня создаётся впечатление, что Вы с сайтами реальными не работали в плане парсинга

Лол, ну вот за вечер я написал - http://lor.click/

, либо не поняли возможностей селениума в плане DOM, X-Path, CSS селектинга.

Посмотри в сторону beautifulsoup, pyquery. Еще mechanize неплох, но к тому времени как я его нашел - у меня уже самописное было все тоже самое.

pi11 ★★★★★
()
Ответ на: комментарий от ktulhu666

Что, внезапно, и на селениуме можно ехать, если делаешь это на кластере? :)

Ну сделай и посмотрим. Ты расчет провел для идеального случая. А что ты будешь делать когда он у тебя повисать будет?

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Кстати, самописное на чём работает? :) На регекспах? :)
И как Вы с ЛОРа получаете сообщения? Через трекер не получится, т.к. он не имеет страниц. Или вообще дампите весь ЛОР, а потом из трекера получаете новые комменты?
Кстати, тут http://lor.click/profile/ktulhu666/ у меня неправильные последние комментарии.
Часть ссылок не работает.
Кстати, авторизацию не юзали?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

10 (страниц в секунду на одном сервере)*30(серверов)*3600(час)*24(часов в сутках)*10(вес страницы в Кб)/1024 = 253125 Мб в сутки.

А если еще учитывать страницы которые будут отдаваться по 30-60 секунд? Не будет у тебя столько данных.

pi11 ★★★★★
()
Ответ на: комментарий от pi11

А что ты будешь делать когда он у тебя повисать будет?

Аналочино со случаем подвисания одного из воркеров обычного скрипта-парсера: рестарт задания со таймауту.
Или у Вас непараллельная синхронная архитектура, которая встаёт колом при любом подвисании?
Или Вы про подвисание с удаленной стороны? Если удаленный сервер висит, то ничего уже не поделаешь.
И да: может Вы меня не правильно поняли: я не собираюсь стартовать на каждую новую страницу браузер, можно спокойно переходить в текущем на новые страницы.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от pi11

А если еще учитывать страницы которые будут отдаваться по 30-60 секунд? Не будет у тебя столько данных.

Тогда можно спокойно запускать по 100-200 браузеров на хост, т.к. не будут жрать проц в простое. В моём случае таких вариантов не должно быть: либо сервер удаленный вообще висит, либо мы нормально с ним работаем.

ktulhu666 ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.