Я только начал использовать Apache Phoenix на HBase. У нас есть настройка, в которой Phoenix работает при вызове из узлов кластера (мы можем чисто CRUD в таблицах). Теперь нам нужно, чтобы приложение, работающее вне сети (скажем, система, на которой размещено мобильное приложение), могло запрашивать таблицу Phoenix. Для этого мы пытаемся использовать Phoenix Query Server (PQS). Я убедился, что порт 8765 доступен из внешней сети, поэтому, когда мы используем приведенную ниже команду CURL, мы ожидаем желаемого результата:
[root@externalsystem ~]# curl -XPOST -H 'request:{"request":"prepareAndExecute","connectionId":"000000-0000-0000-00000000","statementId": 12345,"sql": "SELECT * FROM QUESTTWEETS1","maxRowCount":1}' http://here.comes.external.ip:8765/
Но ответ, который мы получаем:
{"response":"executeResults","missingStatement":true,"rpcMetadata":{"response":"rpcMetadata","serverAddress":"viper.quest.com:8765"},"results":null}
Мы используем HDP 2.3.4.7-4 и согласованные версии HBase и PQS.
Совершенно ясно, что я передаю SQL как один из ключей в запросе. Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю неправильно здесь? Кроме того, поскольку цель этого состоит в том, чтобы предоставить способ доступа к таблицам Phoenix с высокой степенью параллелизма (что может потребоваться мобильным приложениям), является ли PQS подходящим решением или есть какие-либо лучшие варианты доступа к таблицам Phoenix? Поскольку я новичок в использовании HBase и Phoenix, дайте мне знать, если потребуются какие-либо другие подробности.