Perguntas e respostas comuns sobre o HBase SQL (Phoenix) no ApsaraDB for HBase.
Quais pacotes JAR da versão mais recente do ali-phoenix estão disponíveis no Maven Central Repository?
-
Os pacotes de implantação do ali-phoenix 4.x são:
GroupId
ArtifactId
Latest version
com.aliyun.phoenix
ali-phoenix
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-hive
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-spark
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-pherf
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-queryserver
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-queryserver-client
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-pig
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-flume
4.12.0-AliHBase-1.1-0.9
com.aliyun.phoenix
ali-phoenix-core
4.12.0-AliHBase-1.1-0.9
-
Os pacotes de implantação do ali-phoenix 5.x são:
GroupId
ArtifactId
Latest version
com.aliyun.phoenix
ali-phoenix-shaded-thin-client
5.2.5-HBase-2.x
NotaPara evitar conflitos de pacotes entre o thin client e aplicações de negócios de terceiros, use o pacote shade do thin client.
Qual é o formato da URL JDBC do ali-phoenix?
Use o fat client quando o QueryServer estiver desativado e o thin client quando ele estiver ativado. O ali-phoenix não oferece suporte à autenticação baseada em keytab; portanto, o formato da URL do Java Database Connectivity (JDBC) difere do Apache Phoenix.
-
Driver do fat client
URL syntax
jdbc:phoenix:[[ZK_HOST1:port, ZK_HOST2:port, ZK_HOST3:port | comma-separated ZooKeeper Quorum [:port] [:hbase root znode] ]Simple URL examples
jdbc:phoenix:localhost jdbc:phoenix:localhost:123:/hbase jdbc:phoenix:v1,v2,v3:123:/hbase jdbc:phoenix:v1:2181,v2:2181,v3:2181:/hbase jdbc:phoenix:v1:2181,v2:2181,v3:2181 -
Driver do thin client
URL syntax
jdbc:phoenix:thin:[key=value[;key=value...]]Simple URL examples
jdbc:phoenix:thin:url=http://localhost:8765;serialization=PROTOBUF
Há suporte para o QueryServer?
O HBase 1.x usa o Phoenix 4.x no modo fat client. Para usar o QueryServer, configure-o manualmente.
O HBase 2.0 inclui o serviço HBase SQL com o QueryServer ativado por padrão.
Há suporte para o Tracing Web Application?
Ainda não. Esse recurso está em desenvolvimento para o ali-phoenix no ApsaraDB for HBase.
O que fazer se a criação de um índice secundário síncrono atingir o tempo limite?
Phoenix 4.x no HBase 1.0: Adicione a seguinte configuração de tempo limite ao cliente e reinicie-o.
<property>
<name>hbase.rpc.timeout</name>
<value>60000000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>60000000</value>
</property>
<property>
<name>phoenix.query.timeoutMs</name>
<value>60000000</value>
</property>
Phoenix 5.x no HBase 2.0: Modifique esses parâmetros nas configurações do console e reinicie o serviço HBase SQL. Não é necessário reiniciar o HBase, apenas o serviço HBase SQL (Phoenix).
Em um cluster Phoenix 5.x, ajustar os parâmetros de tempo limite afeta as consultas online. Crie o índice usando um fat client ou um cluster MapReduce. Para obter mais informações, consulte
.
Como ativar o Namespace Mapping?
-
Etapas para ativação na versão 4.x
-
Adicione a seguinte configuração ao cliente.
<property> <name>hbase.rpc.timeout</name> <value>60000000</value> </property> <property> <name>hbase.client.scanner.timeout.period</name> <value>60000000</value> </property> <property> <name>phoenix.query.timeoutMs</name> <value>60000000</value> </property> Entre em contato com o suporte do ApsaraDB for HBase para ativar os parâmetros do lado do servidor.
Reinicie o cluster HBase.
-
-
Etapas para ativação na versão 5.x
Faça login no console.
-
Configure os parâmetros.
Defina
phoenix.schema.isNamespaceMappingEnabledephoenix.schema.mapSystemTablesToNamespacecomo true. Reinicie o cluster HBase.
Reinicie o serviço SQL.
NotaConfigure dois conjuntos idênticos de parâmetros com descrições diferentes. Um conjunto destina-se ao query server e o outro ao servidor HBase. Ambos são obrigatórios.
Há suporte para pools de conexão?
A versão 4.12.0.X do Phoenix 4.x oferece suporte a pools de conexão por meio do PhoenixConnectionPool.java.
Como o Phoenix 5.x baseia-se em uma implementação de thin client, o PhoenixConnectionPool.java não se aplica. Use um pool de conexões de terceiros, como o MyBatis. Consulte esta referência para ver um exemplo.
Posso desconectar o cliente se a criação do índice demorar muito?
Não. A criação de índice tem duas etapas: o servidor sincroniza os dados da tabela de source para a tabela de índice e, em seguida, o cliente envia uma solicitação para definir o status da tabela de índice como ativo. A primeira etapa é executada no servidor após o cliente iniciar a solicitação, mas a segunda etapa exige uma conexão ativa do cliente.
Qual é a velocidade de sincronização de dados ao criar uma tabela de índice síncrona?
A indexação de 10 milhões de registros geralmente leva de 5 a 20 minutos. O tempo real depende da configuração do cluster e do uso de recursos.
O que fazer se o cliente for desconectado porque a criação do índice está demorando muito?
Após uma desconexão, a tabela de índice geralmente permanece no estado building. Verifique o status com o comando !table no sqlline. O índice só estará concluído quando o status mudar para active. Para recuperar, escolha uma das opções abaixo:
Reconstrua o índice usando o comando
alter index.Exclua a tabela de índice no estado
building, aumente o tempo limite do cliente e crie o índice novamente.
Como importar dados de um banco de dados relacional para uma tabela Phoenix no ApsaraDB for HBase?
Use o DataX. Para exemplos, consulte Exemplos.
O que fazer ao encontrar o erro ERROR 599(42912): Default enable Force index, please set phoenix.force.index=false to disable it...., durante uma consulta?
O Phoenix impõe o uso de índices durante a compilação SQL para evitar varreduras completas de tabela. Esse erro ocorre quando uma consulta filtra por uma coluna que não é chave primária nem índice. Para permitir tais consultas, desative a verificação forçada de índice:
Phoenix 4.x: Defina
phoenix.force.indexcomofalseno arquivohbase-site.xmldo cliente e reinicie-o.Phoenix 5.x: Defina
phoenix.force.indexcomofalsenas configurações de parâmetros do console e reinicie o serviço HBase SQL.
O que fazer ao receber o erro java.sql.SQLException: java.lang.IllegalArgumentException: Connection is null or closed ao usar um pool de conexões Druid com Spring Boot?
O Phoenix armazena conexões em cache internamente. Envolver essa funcionalidade com um pool de conexões externo, como o Druid, causa conflitos e algumas conexões são fechadas inesperadamente. Remova o pool externo e use o cache de conexões integrado do Phoenix.
Por que recebo o erro phoenixdb.errors.InternalError: ('', None, None, None) ao usar um cliente Python para conectar ao QueryServer e tentar ler ou gravar dados após um período de inatividade?
O cliente Python open source não se reconecta automaticamente após um tempo limite. Quando uma conexão por meio de uma instância do Server Load Balancer (SLB) fica ociosa e atinge o tempo limite, a próxima solicitação é roteada para um nó diferente do QueryServer, o que causa esse erro.
Para corrigir isso, substitua o cliente open source pelo cliente phoenix-python da Alibaba Cloud, que gerencia a reconexão automaticamente:
Baixe o cliente phoenix-python da Alibaba Cloud. Clique em para baixar.
-
Se você já tiver um driver phoenix-python instalado, remova-o primeiro.
rm -rf /usr/lib/python${version}/site-packages/phoenixdb* -
Descompacte o pacote baixado, acesse o diretório phoenixdb e instale o driver.
python setup.py install
O Phoenix oferece suporte a multitenancy?
Os comandos grant e revoke não têm suporte atualmente.