hbase phoenix ambari sqlline

hbase - No se pueden leer datos grandes de la tabla de Phoenix



ambari sqlline (3)

callTimeout = 60000, callDuration = 62365.

Parece que la duración de su llamada es superior a 10 minutos, que es la duración del tiempo de espera. Intente configurar "hbase.master.catalog.timeout" en el archivo de configuración hbase-default.xml - (o su personalizado) a un valor más alto

Hola a todos. Aparece el siguiente mensaje de error mientras ejecutaba la consulta de conteo de Phoenix en una tabla grande.

0: jdbc:phoenix:hadoopm1:2181> select Count(*) from PJM_DATASET; +------------+ | COUNT(1) | +------------+ java.lang.RuntimeException: org.apache.phoenix.exception.PhoenixIOException: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Fri Jan 09 02:18:10 CST 2015, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=62365: row '''' on table ''PJM_DATASET'' at region=PJM_DATASET,,1420633295836.4394a3aa2721f87f3e6216d20ebeec44., hostname=hadoopctrl,60020,1420790733247, seqNum=27753 at sqlline.SqlLine$IncrementalRows.hasNext(SqlLine.java:2440) at sqlline.SqlLine$TableOutputFormat.print(SqlLine.java:2074) at sqlline.SqlLine.print(SqlLine.java:1735) at sqlline.SqlLine$Commands.execute(SqlLine.java:3683) at sqlline.SqlLine$Commands.sql(SqlLine.java:3584) at sqlline.SqlLine.dispatch(SqlLine.java:821) at sqlline.SqlLine.begin(SqlLine.java:699) at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441) at sqlline.SqlLine.main(SqlLine.java:424) 0: jdbc:phoenix:hadoopm1:2181>

por favor ayuda.


(Tres años después de la pregunta original)

Nos encontramos con excepciones muy similares hoy:

java.net.SocketTimeoutException: callTimeout=60000, callDuration=60101: row '''' on table ''****'' at region=****, hostname=wn1-bghbas.y1ao3ht4safu3e4em4fhuri0eh.ax.internal.cloudapp.net,16020,1543844388080, seqNum=568644 org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions: Mon Dec 03 14:01:45 UTC 2018, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=60101: row '''' on table ''****'' at region=****, hostname=****, seqNum=568644 at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.throwEnrichedException(RpcRetryingCallerWithReadReplicas.java:271) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:210) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:210) at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327) at org.apache.hadoop.hbase.client.ClientScanner.loadCache(ClientScanner.java:413) at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:371) at org.apache.phoenix.iterate.ScanningResultIterator.next(ScanningResultIterator.java:55) ... 11 more

Después de rastrear el rastreo de llamadas de la excepción, descubrimos que la variable de configuración correcta es hbase.client.scanner.timeout.period . Que se puede encontrar en la clase org.apache.hadoop.hbase.HConstants con el nombre HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD .

Tenga en cuenta que si está pasando un valor para hbase.client.scanner.timeout.period como una propiedad a PhoenixDriver utilizando JDBC sin PhoenixDriver , el valor debe ser String , no int .

Algo como:

Properties prop = new Properties(); prop.put("user", "***"); prop.put("password", "***"); prop.put(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, "800000"); Connection connection = DriverManager.getConnection("jdbc:phoenix:10.0.0.1:2181:/hbase-unsecure", prop);

Para el registro, estamos usando Phoenix 4.7 en Hbase 1.1


Debe aumentar la propiedad de configuración de hbase a un valor más alto en las configuraciones de servidor y cliente de hbase, el valor predeterminado es 1 min (60000 Milli Sec)

<property> <name>hbase.rpc.timeout</name> <value>600000</value> </property>

Lo más importante es que el siguiente comando debe devolver el directorio de configuración correcto de hbase donde el archivo hbase-site.xml contiene la propiedad anterior. Si el valor de hbase_conf_path está vacío o., Ejecute el comando export HADOOP_CONF_DIR=<correct_hbase_dir>; para señalar la configuración correcta de hbase antes de ejecutar el comando sqlline.py .

phoenix_utils.py | grep hbase_conf_path