2016-09-10 4 views
0

Я только что начал использовать Apache Phoenix на HBase. У нас есть настройка, в которой Phoenix работает при вызове из узлов кластера (мы умеем CRUD в таблицах чисто). Теперь мы хотим, чтобы приложение, работающее за пределами сети (например, система с мобильным приложением), могла запрашивать таблицу Phoenix. Для этого одним из вариантов, которые мы пытаемся использовать, является Phoenix Query Server (PQS). Я заверил, что порт 8765 доступен из внешней сети и поэтому, когда мы используем ниже команды CURL, мы ожидаем, что желаемый результат:Phoenix Query Server не возвращает никаких результатов

[корень @ externalsystem ~] # Curl -XPOST -H «запрос: { «запрос»: «prepareAndExecute», «connectionId»: «000000-0000-0000-00000000», «statementId»: 12345, «sql»: «SELECT * FROM QUESTTWEETS1», «maxRowCount»: 1} 'http://here.comes.external.ip:8765/

Но ответ, который мы получаем:

{ "ответ": "executeResults", "missingStatement": правда, "rpcMetad ата ": {" ответ ":" rpcMetadata " "АдресСервера":" viper.quest.com:8765"},"results":null}

Мы используем HDP 2.3.4.7-4 и приведены в соответствие версии HBase и PQS.

Очень ясно, что я передаю SQL как один из ключей в запросе. Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю неправильно здесь? Кроме того, поскольку целью этого является предоставление доступа к столам Phoenix при высоком уровне параллелизма (которые могут потребовать приложения для мобильных телефонов), является ли PQS достойным решением или есть лучшие варианты доступа к таблицам Phoenix? Поскольку я новичок в использовании HBase и Phoenix, пожалуйста, дайте мне знать, если есть какие-либо другие детали.

ответ

1

Обнаружил ответ на этот вопрос и давал его здесь для любой другой помощи newbees. Я должен был узнать больше о том, как работает JDBC в целом. Ниже приведены подробные инструкции для получения PQS работает для вас:

Шаг 1: завиток запроса -XPOST -h»: { "запрос": "OpenConnection", "ConnectionID":" 000000-0000-0000-00000000 «}» URL

Пример ответа: { "ответ": "OpenConnection", "rpcMetadata": { "ответ": "rpcMetadata", "АдресСервера": "viper.quest.com:8765"}}

Шаг 2: завиток 'запроса: { "запрос": "createStatement", "ConnectionID": "000000-0000-0000-00000000"}' -XPOST -H URL

образец ответа: { "ответ": "createStatement", «connectionId»: «000000-0000-0000-00000000», «statementId»: 1, «rpcMetadata»: {«response»: «rpcMetadata», «serverAddress»: «viper.quest.com:8765»}}

Шаг 3: curl -XPOST -H 'request: {"request": "prepareAndExecute", "connectionId": "000000-0000-0000-00000000", "statementId": 1, "sql": "SELECT * FROM QUESTTWEETS1" , "maxRowCount": - 1} 'URL-

образец ответа: JSON с данными

Шаг 4: завиток -XPOST -H' запроса: { "запрос": "closeStatement", "ConnectionID" : "000000-0000-0000-00000000", "statementId": 1} 'URL

Образец ответа: {"response" : "CloseStatement", "rpcMetadata": { "ответ": "rpcMetadata", "АдресСервера": "viper.quest.ком: 8765" }}

Шаг 5: завиток 'запроса: {запрос ": "closeConnection", "ConnectionID": "000000-0000-0000-00000000"} -XPOST -h"' URL

Пример ответа: { "ответ": "closeConnection", "rpcMetadata": { "ответ": "rpcMetadata", "АдресСервера": "viper.quest.com:8765"}}

Где URL представляет форма - http://external.ip.of.pqs:8765/

Надеется, что это помогает

Смежные вопросы