我想使用php連接hadoop集群中的hive透過unixODBC並且搭配Hortonworks hive-odbc driver來達成這個目標
上次我有在這邊發問有關於 hive-odbc設定的問題,不過沒有人回覆
經過快一個月後我找到了一篇設定hive-odbc driver的文章並照著上面的教學設定成功
以上是我在hadoop集群中某台datanode架設unixODBC並使用isql查詢到hive資料庫中的表
接下來我就嘗試寫一個網頁透過unixODBC來連接hive但是顯示以下錯誤訊息
我本來以為是php-odbc不支持我這樣操作,但是我看到有人成功的案例
https://community.cloudera.com/t5/Support-Questions/How-to-connect-PHP-with-HIVE-through-THRIFT/td-p/185484
上面是我的odbc.ini與odbcinst.ini的設定
希望有人可以告訴我哪邊設定有問題,導致我php沒辦法與unixODBC連接失敗
把 Data Source Name 改成一樣
試試看
目前
ini 裡是 Hive_odbc_64
程式裡是 hive_odbc_64
我不確定大小寫有沒有差別
但是你提供的那個「成功」的文章裡DSN 是連大小寫都一致的
感謝回覆,我剛剛有改成一樣的名稱且大小寫一致了,但是還是沒辦法連過去
因為錯誤訊息有「Data Source Name not found」
建議往這個方向找問題
例如:找不到 odbc.ini/odbcinst.ini 的放置位置
嘗試把 odbc.ini/odbcinst.ini 放在 /etc 底下看看
墨嗓
昨天switch壞掉了,換了一台之後錯誤訊息一直顯示這個
有辦法解嗎?
PHP Warning: odbc_connect(): SQL error: [unixODBC][Hortonworks][ThriftExtension] (9) Error occurred while authenticating via SASL. Error details: SASL(-4): no mechanism available: No worthy mechs found, SQL state 28000 in SQLConnect
因為我不管有沒有改odbc.ini跟odbcinst.ini的錯誤訊息都是這個,可能這個問題要先解掉在試試目錄有沒有用了
墨嗓
我把odbc.ini跟odbcinst.ini放在/etc/etc底下就產生上面那個bug了,看了好幾天才發現是那個在搞鬼,刪掉之後就回到一開始的bug了PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect
我手邊沒有類似的環境可以幫你測試,但從兩則錯誤訊息來看。
我反而覺得:
PHP Warning: odbc_connect(): SQL error: [unixODBC][Hortonworks][ThriftExtension] (9) Error occurred while authenticating via SASL. Error details: SASL(-4): no mechanism available: No worthy mechs found, SQL state 28000 in SQLConnect
這一段錯誤訊息已經是有吃到 odbc.ini, odbcinst.ini 的設定值之後的錯誤訊息,要緊接著修正 SASL 的問題,看起來照著錯誤訊息搜尋,你可以找到還需要補裝一些工具。
而 PHP Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect
是還沒吃到 ODBC 設定。
墨嗓感謝你的回覆,經過半個月try and error之後出現了新的問題,照你說的把odbc.ini放進/etc底下之後應該是真的有吃到設定了,然後它就要求我要開啟SSL了,我把新的問題放在另一篇發問,如果你剛好知道怎麼解的話,希望你可以到另一篇回覆,感謝