He creado una tabla HCatalog con la asignación de particiones a algunos archivos zip en S3.

En Zeppelin, creé un párrafo usando el módulo %pyspark con los siguientes códigos:

Párrafo 1:

%pyspark
from pyspark.sql import HiveContext

hc = HiveContext( sc )
f_req_2h = hc.table( "default.f_req_2h" )  # a HCatalog table in the default schema"
print f_req_sh.count()
f_req_2h.registerTempTable("f_req_2h")

Cuando lo ejecuté, hasta ahora todo bien. Luego creé un segundo párrafo para consultar la tabla f_req_2h, que se registró en el párrafo 1, de la siguiente manera:

Párrafo 2:

%sql
select * from f_req_2h limit 1;

Recibí un error "table not found". Se agradece cualquier ayuda o puntero.

1
k128 31 jul. 2016 a las 00:14

2 respuestas

La mejor respuesta

Este es un comportamiento esperado. Cada tabla o DataFrame en Spark está vinculada a un SQLContext específico que se ha utilizado para crearla y no se puede acceder fuera de ella.

Apache Zeppelin inicializa tanto SparkContext como SQLContext que se comparten entre intérpretes y se puede acceder a ellos como sc y sqlContext respectivamente. Debe crear estas instancias, no crear otra, si desea beneficiarse de la interoperabilidad de los intérpretes. En otras palabras, no cree un contexto personalizado utilizando uno predeterminado.

0
zero323 30 jul. 2016 a las 21:45

Gracias zero323 por tu puntero. Eliminé el HiveContext y revisé el código de la siguiente manera y funciona:

%pyspark

f_req_2h = sqlContext.table( "default.f_req_2h" ) 
# a HCatalog table in the default schema"  
print f_req_sh.count()  
f_req_2h.registerTempTable("f_req_2h")
0
Michail N 5 abr. 2019 a las 08:26