powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Как подружить куб с odbc с источником?
25 сообщений из 26, страница 1 из 2
Как подружить куб с odbc с источником?
    #38682630
Всем добрый день.
Пытаюсь сделать так, чтобы в msas можно было создать rolap куб, смотрящий на hive (big data). К сожалентю не вижу oledb провайдеров до hive, а odbc не поддерживается в msas.

Вопрос: как пройти эту стенку?
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682642
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь,

Попробовать подключить внешний источник через ODBC к MS Access, а последний к SSAS
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682769
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682828
Дедушка,

читал я эту статью. Майкрософт не хочет поддерживать в студии своей свой родной драйвер
OLE DB Provider for ODBC, который у них есть с непотятно каких времен.
Почему не поддерживают - мне лично не понятно.

Поэтому эти ребята пошли через ж...: они сделали linked server на SQL Server-е, который работает
через "MS OLE DB Provider for ODBC", а потом из analysis лезут на этот linked server.

А теперь смотрите фокус на картинке ниже.
Оказывается, сторонний производитель может нормально сделать OLEDB мост на ODBC.

Но все-таки там есть какая-то проблемка в самом analysis - читайте следующий пост.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682830
вот что получаю при попытке добавить таблицу в DSV
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682839
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Бобак,

а если не таблицу добавлять, а запрос там написать?
select * from t
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682843
насколько я понял, из папки D:\DATA\SQL2008\MSAS10_50.SQL2008\OLAP\bin\Cartridges\
используется какой-то из картриджей, что по сути представляет из себя трансформатор в SQL из XML-я DSV.

И ясно, что analysis использует не тот картридж.

Если посмотреть в каждый картридж, то там есть строчки

Код: xml
1.
2.
3.
4.
	<mssqlcrt:provider managed="yes" native="yes">Microsoft SQL Server.08.00.0191</mssqlcrt:provider>
	<mssqlcrt:provider managed="yes" native="yes">Microsoft SQL Server.08.00.0194</mssqlcrt:provider>
	<mssqlcrt:provider type="prefix" managed="yes" native="yes">Microsoft SQL Server</mssqlcrt:provider>
	<mssqlcrt:provider type="prefix" managed="yes" native="yes"></mssqlcrt:provider>



что-то типа "используй меня, если провайдер называется начиная с ...".
И понятно, что надо просто сделать аналогичный.

Идеи по тому, как это сделать, у меня есть. Сейчас главный вопрос - как отследить то, какой SQL ушел на Hive...
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682845
Критик,

см. картинку.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682846
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так попробовать?
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682847
я то почему-то начинаю догадываться почему оно так.

DSV любит делать врапперы типа

select * from (select * from table)

где внутри - ваш запрос, а вовне - еще один селект. Но такое работать на Hive не будет, потому что Hive любит чтобы было имя в подселекта, например

select * from (select * from table) x

Но это гипотеза. Я пока-что как слепой - не вижу какие SQl запросы уходят на Hive.
Можете подсказать где аналог SQL Profiler?
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682854
Критик, спасибо.
В аттаче - ODBC трасса.

В ней я не вижу прямого текста запроса select * from webloganalytics

хотя название самой таблицы webloganalytics встречается.
Такое ощущение, что SQL запрос "разбирает" на куски сам ODBC, или же студия перед тем, как послать запрос, вместо того, чтобы его просто послать, делает разбор селекта и пытается вытянуть еще какую-то информацию о таблице (типа метаданных или что-то в этом роде).

Вижу в трассе ODBC

devenv 1f08-1d54 ENTER SQLTablesW
HSTMT 0x0376FAF0
WCHAR * 0x0015BAB0 [ -3] "hive\ 0"
SWORD -3
WCHAR * 0x00000000 <null pointer>
SWORD -3
WCHAR * 0x0015BEB0 [ -3] "webloganalytics\ 0"
SWORD -3
WCHAR * 0x00000000 <null pointer>
SWORD -3


дальше идет текст типа DESC TABLE, DESC TYPE (отсюда и догадываюсь, что студия все-таки запрашивает метаданные таблицы),

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


а потом вдруг

devenv 1f08-1d14 EXIT SQLSetStmtOption with return code -1 (SQL_ERROR)
HSTMT 0x0377B288
UWORD 12 <SQL_USE_BOOKMARKS>
SQLPOINTER 1 <SQL_UB_ON>

DIAG [HY024] [Hortonworks][ODBC] (10280) Invalid attribute value. (10280)


Оно как бы похоже на то, что Hive не знает что такое SQL_USE_BOOKMARKS.
То есть, либо devenv не имеет права спрашивать SQL_USE_BOOKMARKS (потому что devenv должен знать, что это нельзя спрашивать), либо же реализация ODBC драйвера хреновая.

Надо читать как работает ODBC чтобы понять что такое SQL_USE_BOOKMARKS

Блин, вот паззл....
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682857
здесь http://msdn.microsoft.com/en-us/library/ms716496(v=vs.85).aspx
вижу

The SQL_GET_BOOKMARK statement option has been deprecated in ODBC 3.x. For an ODBC 3.x driver to work with ODBC 2.x applications that use SQL_GET_BOOKMARK, it must support SQL_GET_BOOKMARK. For an ODBC 3.x driver to work with ODBC 2.x applications, it must support setting SQL_USE_BOOKMARKS to SQL_UB_ON and should expose fixed-length bookmarks


То есть, похоже на то, что разработчики Hive сделали свой ODBC драйвер по формату ODBC 3.x., а вот дядьки из OpenLink, которые писали OLEDB to ODBC Bridge (которым я пользуюсь) рассчитывают на стандарт ODBC 2.x.

Не знаю насколько это все логично, но надо теперь выяснять в разработчиков бриджа.

То есть, похоже, что проблема с картриджами - это еще "цветочки" (это мы бы и сами обошли путем правки одного из xsl). Вот как теперь ягодки обойти с ODBC...

Может кто-нибуть подскажет какой-то другой переходник от OLEDB в ODBC?
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682861
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Бобак,

и дело точно не в
select * from (select * from table) x
т.к. без "х" и MSSQL не поймет запрос

собственно, у вас до запроса просто дело не доходит, вот пример разбора трассировки с комментариями http://publib.boulder.ibm.com/html/as400/v5r1/ic2979/index.htm?info/rzaii/rzaiiodbc24.HTM
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682872
Критик,

я это уже понял.

Написал пост в форум OpenLink
http://boards.openlinksw.com/support/viewtopic.php?f=8&t=6335
буду ждать что они ответят.

Здесь одно из трех:
а) либо накосячили разработчики Hive
б) либо накосячили разработчики ODBC драйвера к hive
в) либо накосячили OpenLink - не смотрят на то, какая версия ODBC драйвера, и пускают не ту команду.

Сейчас уже поздно, у меня голова не варит хорошо, чтобы понять где именно баг. Но то, что он есть - это точно.

К стати, менял Hortonworks ODBC for Hive на Microsoft ODBC for Hive и на Cloudera ODBC for Hive - результат тот же.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682875
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще попробовал тестовые таблицы с одним столбцом с разными типами данных этого столбца, может драйвер не понимает что-то конкретное.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682880
Критик,

да вот знаете что странно, это то, что если екселем напрямую коннектится - то он успешно берет данные из ТОЙ ЖЕ таблицы, которую я пытаюсь добавить в студии.

И вот смотрим вторую трассу - см. аттач.

Нету в ней вызовов
SQLSetStmtOption SQL_USE_BOOKMARKS
SQLGetDiagRecW SQL_HANDLE_STMT

на которых собственно ODBC драйвер и вылетает с ошибкой
[Hortonworks][ODBC] (10280) Invalid attribute value


То есть, получается, что этот "универсальный" OLEDB to ODBC Bridge от OpenLink делает что-то лишнее, чего мог бы и не делать (ну раз екселю этого не надо делать, чтобы взять данные, то зачем это openlink-мосту?)

Тут или кланяться openlink-ам и просить их исправить (или параметр добавить) чтобы команды не посылались,

или попробовать найти сорсы Hive ODBC (подозреваю, что они общие, ибо летит то-же самое и в Майкрософтовском ODBC) и поправить эти сорсы, чтобы тупо игнорировали эти ненужные команды,

или обращаться к разработчикам ODBC и просить, чтобы поддержку этих штук обеспечили (что понятно, что маловероятно).

Пока что не знаю что легче всего, и что даст результат.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682884
Если посмотреть сюда
https://cwiki.apache.org/confluence/display/Hive/HiveODBC#HiveODBC-BuildingandSettingUpODBCComponents

то написано черным по белому

SQLSetStmtOption - NOT supported

Я понимаю, что Hortonworks и Simba вместе делали свою альтернативную версию, но не думаю, что они бы добавляли поддержку этой команды. Я думаю они занимались только оптимизацией.

Ну а эту команду точно запускает openlink oledb to odbc bridge.

Другой вопрос: зачем он это делает? то ли от безисходства (если от devenv.exe через OLEDB идет запрос "сделай что-то вот такое", то и мост имеет какой-то алгоритм, который этот запрос пытается трансформировать в ODBC вызовы), то ли от неправильного алгоритма. Скорее второе, потому что Ексель, который напрямую идет на ODBC, почему-то не собирается эту команду дергать, и ему хватает всего.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38682974
На утро пришла мне в голову альтернативная идея: а что если использовать родной .NET Data Provider for ODBC вместо сторонних OLEDB for ODBC?

Но есть одна незадачка - см. картинку: почему-то в Analysis Services .NET Data provider for ODBC не отображается.

Если проводить параллель с .NET Data provider for Vertica (который есть и там, и там), то можно сделать один вывод: есть какой-то интерфейс, который классы вертики ("C:\Program Files (x86)\Vertica Systems\ADO.NET\Vertica.Data.dll" ) имплементируют и выставляют во внешний мир, в то время как у стандартного .net data provider for odbc его нет.

Самое простое, что можно сделать - это написать класс-враппер над Майкрософтовским .NET Data Provider for ODBC (используя его же внутри) и выставвить нужный интерфейс. Пока что не знаю только какой интерфейс и куда прописать инфу, чтобы его увидел Analysis Services...
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38683033
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://msdn.microsoft.com/ru-ru/library/ms175608.aspx Источники данных ODBC не поддерживаются в многомерных решениях. Хотя соединение будут обеспечивать сами службы Analysis Services, конструкторы в SQL Server Data Tools, используемые для создания представлений источников данных, измерений и кубов, не могут подключаться к источнику данных ODBC, даже если используется драйвер MSDASQL (драйвер .NET для ODBC). Если бизнес-требования включают источник данных ODBC, рассмотрите альтернативную возможность — создание табличного решения.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38683085
Критик,

да читал я теорию.

Вы смотрите в конерь: никто из разработчиков Hive не будет делать под него ни .NET провайдера, ни OLEDB провайдера.
Все будут делать только ODBC.

Значит мне надо как-то сдлеать так, чтобы MSAS, который умеет коннектиться к .net data provider или же к oledb provider, коннектился именно к .net или к oledb и не "морочил себе голову" о том что делает этот .net или oledb провайдер. Это уж, извините, не их дело.

Лучшим "передастом" может быть родной Microsoft .NET Data Provider for ODBC. Но у него нету каких-то интерфейсов, или он не зарегистрирован где-то, где должен быть зарегистрирован. И поэтому студия его не видит.


Значит берем в руки C#, пишем классы типа AdvancedODBCNetProvider, которые будут использовать родной Microsoft .NET Data Provider for ODBC, добавляем недостающие интерфейсы, регистрируем где надо - и проблема решена. Вот только в интернете фиг найдещь описание того, как сделать собственный .net data provider и куда его прописывать...

Но зато примеры есть. Тот же Oracle .NET Data provider - у него есть xcopy версия ODAC121012Xcopy_32bit.zip , а в ней bat-файл, где идет весь код прописывания "куда-надо". Придется посидеть и почитать как другие сделали.

Пробовал также искать программой what changed что меняется после инсталляции Вертики. Вижу список файлов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
C:\Program Files\Vertica Systems\ADO.NET\Policy.6.0.Vertica.Data.dll
C:\Program Files\Vertica Systems\ADO.NET\Policy.6.1.Vertica.Data.dll
C:\Program Files\Vertica Systems\ADO.NET\Vertica.Data.dll
C:\Program Files\Vertica Systems\ADO.NET\Vertica60Policy.config
C:\Program Files\Vertica Systems\ADO.NET\Vertica61Policy.config
C:\Program Files\Vertica Systems\Plugin2008\Vertica.Data.2008.DDEX.dll
C:\Program Files\Vertica Systems\Plugin2008\Vertica.Data.2008.DDEX.InstallLog
C:\Program Files\Vertica Systems\Plugin2010\Vertica.Data.2010.DDEX.dll
C:\Program Files\Vertica Systems\Plugin2010\Vertica.Data.2010.DDEX.InstallLog
C:\Program Files\Vertica Systems\Plugin2012\Vertica.Data.2012.DDEX.dll
C:\Program Files\Vertica Systems\Plugin2012\Vertica.Data.2012.DDEX.InstallLog

C:\WINDOWS\assembly\GAC_MSIL\Policy.6.0.Vertica.Data\7.0.1.0__725728a8837b3bd5\Policy.6.0.Vertica.Data.dll
C:\WINDOWS\assembly\GAC_MSIL\Policy.6.0.Vertica.Data\7.0.1.0__725728a8837b3bd5\Vertica60Policy.config
C:\WINDOWS\assembly\GAC_MSIL\Policy.6.1.Vertica.Data\7.0.1.0__725728a8837b3bd5\Policy.6.1.Vertica.Data.dll
C:\WINDOWS\assembly\GAC_MSIL\Policy.6.1.Vertica.Data\7.0.1.0__725728a8837b3bd5\Vertica61Policy.config
C:\WINDOWS\assembly\GAC_MSIL\Vertica.Data\7.0.1.0__725728a8837b3bd5\Vertica.Data.dll

C:\WINDOWS\assembly\pubpol3.dat

Начал читать код регистрилки Ораклового .net data provider-а - тоже наблюдаю подобное: прописывание в GAC собственно dll-ки провайдера, и прописывание файлов политик. По реестру не вижу ничего (пока что).

У нас разработчики ничем не хуже, чем в Оракла и у Вертики. Если можно им - то можно и нам.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38969128
кириллk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Игорь Бобак]Критик,

Игорь, чем дело кончилось? :)
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38972340
кириллk,

дело не кончилось. оно пошло в другом направлении.

Я вот себе подумал, а зачем мне собственно MS Analysis Services?

По сути мне нужен не MOLAP, мне нужен ROLAP. Почему так? Потому что связка будет следующей:

Business Analysis Tool (или другой клиент)
->
[connect через xmla, mdx]
->
ROLAP server
->
[трансформация mdx в sql]
->
SparkSQL / Impala / Presto / любой другой БЫСТРЫЙ движок поверх данных в Hive.


И вопрос на засыпку: а чего собственно я должен использовать именно майкрософтовский (R)OLAP сервер? на нем что, свет клином сошелся? Еще и им деньги плати за лицензии на MSAS при том, что они не могут свой .NET for ODBC нормально написать и интефейcы все паблишнуть...

В связи с этим я в данный момент исследую Mondrian. У него есть один недостаток: это всего лишь движок, и надо хелпер-штучки сделать: веб-приложение, публикующее его сервлет, и может еще что-то. Но есть также один большой плюс: open source.

Сейчас у меня с Mondrian полезли разные баги, пока не понял то ли это баги в мондриане, то ли это я неправильно что-то сконфигурировал. Но с ним легче работать, чем с майкрософтом, потому что и сам mondrian - open source, и JDBC провайдер, которым он идет на hive - тоже open source. Баги можно отловить быстро.

Короче, будут новости - сообшу. Я в процессе.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38973877
Ну что же, коллеги, результат есть: имеем коннект из Excel pivot table в Mondrian, оттуда в Spark SQL.
Пока что все на БД Foodmart (затянутую в Hive), завтра буду пробовать на более реальной БД.

Есть желающие потом (когда добьюсь результата) протестировать на своих реальных big data данных?
Если да - присылайте заявки в ibobak at gmail dot com, будем сотрудничать.
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38974035
кириллk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь.

А зачем такие сложности?

Почему просто не сделать

hadoop - hive - excel ?

Зачем нужен мондриан?
...
Рейтинг: 0 / 0
Как подружить куб с odbc с источником?
    #38974059
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кириллkИгорь.

А зачем такие сложности?

Почему просто не сделать

hadoop - hive - excel ?

Зачем нужен мондриан?Наверное, потому что в такой конфигурации между кликами можно пить кофе ;)
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Как подружить куб с odbc с источником?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]