Es posible crear una tabla en la chispa mediante una instrucción select?

Hago la siguiente

import findspark
findspark.init()
import pyspark
from pyspark.sql import SQLContext

sc = pyspark.SparkContext()
sqlCtx = SQLContext(sc)

spark_df = sqlCtx.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("./data/documents_topics.csv")
spark_df.registerTempTable("my_table")

sqlCtx.sql("CREATE TABLE my_table_2 AS SELECT * from my_table")

pero me sale el error

/Users/usuario/anaconda/bin/python
/Users/user/workspace/Outbrain-Click-Prediction/test.py el Uso de Spark
por defecto log4j perfil: org/apache/spark/log4j-defaults.propiedades
Ajuste de nivel de registro predeterminado para «ADVERTIR». Para ajustar el nivel de registro de uso
sc.setLogLevel(newLevel). 17/01/21 17:19:43 ADVERTIR NativeCodeLoader:
No se puede cargar el nativo de hadoop de la biblioteca para su plataforma… de usar
builtin-clases de java donde sea aplicable Traceback (la mayoría de llamada reciente
last): File
«/Users/user/spark-2.0.2-bin-hadoop2.7/python/pyspark/sql/utils.py»,
línea 63, en el deco
retorno f(*a, **kw) File «/Users/user/spark-2.0.2-bin-hadoop2.7/python/lib/py4j-0.10.3-src.zip/py4j/protocol.py» línea 319, en get_return_value py4j.protocolo.Py4JJavaError: Un error
ocurrió durante una llamada o19.sql. :
org.apache.chispa.sql.AnalysisException: no resueltos operador
‘CreateHiveTableAsSelectLogicalPlan CatalogTable( Tabla: my_table_2
Creado: sábado 21 de enero a las 17:19:53 EST 2017 Último Acceso: Mie Dic 31
18:59:59 hora del este de 1969 Tipo: GESTIÓN de Almacenamiento(InputFormat:
org.apache.hadoop.mapred.TextInputFormat, OutputFormat:
org.apache.hadoop.la colmena.ql.io.HiveIgnoreKeyTextOutputFormat)), false;;
‘CreateHiveTableAsSelectLogicalPlan CatalogTable( Tabla: my_table_2
Creado: sábado 21 de enero a las 17:19:53 EST 2017 Último Acceso: Mie Dic 31
18:59:59 hora del este de 1969 Tipo: GESTIÓN de Almacenamiento(InputFormat:
org.apache.hadoop.mapred.TextInputFormat, OutputFormat:
org.apache.hadoop.la colmena.ql.io.HiveIgnoreKeyTextOutputFormat)), false :
+- Proyecto [document_id#0, topic_id#1, confidence_level#2] : +- SubqueryAlias my_table : +-
Relación[document_id#0,topic_id#1,confidence_level#2] csv

a
org.apache.chispa.sql.catalizador.análisis.CheckAnalysis$clase.failAnalysis(CheckAnalysis.scala:40)
en
org.apache.chispa.sql.catalizador.análisis.El analizador.failAnalysis(Analizador.scala:58)
en
org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:374)
en
org.apache.spark.sql.catalyst.analysis.CheckAnalysis$$anonfun$checkAnalysis$1.apply(CheckAnalysis.scala:67)
en
org.apache.chispa.sql.catalizador.de los árboles.TreeNode.foreachUp(TreeNode.scala:126)
en
org.apache.chispa.sql.catalizador.análisis.CheckAnalysis$clase.checkAnalysis(CheckAnalysis.scala:67)
en
org.apache.chispa.sql.catalizador.análisis.El analizador.checkAnalysis(Analizador.scala:58)
en
org.apache.chispa.sql.de la ejecución.QueryExecution.assertAnalyzed(QueryExecution.scala:49)
en org.apache.chispa.sql.Conjunto de datos$.ofRows(conjunto de datos.scala:64) en
org.apache.chispa.sql.SparkSession.sql(SparkSession.scala:582) en
sol.reflejar.NativeMethodAccessorImpl.invoke0(Native Method) at
sol.reflejar.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
en
sol.reflejar.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
en java.lang.reflejar.Método.invoke(Método.java:498) en
py4j.reflexión.MethodInvoker.invoke(MethodInvoker.java:237) en
py4j.reflexión.ReflectionEngine.invoke(ReflectionEngine.java:357) en
py4j.La puerta de enlace.invoke(Puerta de enlace.java:280) en
py4j.los comandos.AbstractCommand.invokeMethod(AbstractCommand.java:132)
en py4j.los comandos.CallCommand.ejecutar(CallCommand.java:79) en
py4j.GatewayConnection.ejecutar(GatewayConnection.java:214) en
java.lang.Subproceso.de ejecución(Thread.java:745)

Durante la manipulación de la anterior excepción, otra excepción:

Traceback (la mayoría de llamada reciente last): File
«/Users/user/workspace/Outbrain-Click-Prediction/test.py», línea 16, en

sqlCtx.sql(«CREATE TABLE my_table_2 COMO SELECT * from my_table») Archivo
«/Users/user/spark-2.0.2-bin-hadoop2.7/python/pyspark/sql/context.py»,
línea 360, en sql
devolver el auto.sparkSession.sql(sqlQuery) File «/Users/user/spark-2.0.2-bin-hadoop2.7/python/pyspark/sql/session.py»,
línea 543, en sql
volver DataFrame(auto._jsparkSession.sql(sqlQuery), auto._wrapped) Archivo
«/Users/user/spark-2.0.2-bin-hadoop2.7/python/lib/py4j-0.10.3-src.zip/py4j/java_gateway.py»,
línea 1133, en llamada Archivo
«/Users/user/spark-2.0.2-bin-hadoop2.7/python/pyspark/sql/utils.py»,
la línea de 69, en el deco
elevar AnalysisException(s.split(‘: ‘, 1)[1], stackTrace) pyspark.sql.utils.AnalysisException: «sin resolver operador
‘CreateHiveTableAsSelectLogicalPlan CatalogTable(\n\tTable:
my_table_2\n\tCreated: Sat Jan 21 17:19:53 EST 2017\n\tLast de Acceso:
Miércoles 31 de diciembre, 18:59:59 hora del este de 1969\n\tType: ADMINISTRADO\n\tStorage(InputFormat:
org.apache.hadoop.mapred.TextInputFormat, OutputFormat:
org.apache.hadoop.la colmena.ql.io.HiveIgnoreKeyTextOutputFormat)),
false;;\n’CreateHiveTableAsSelectLogicalPlan CatalogTable(\n\tTable:
my_table_2\n\tCreated: Sat Jan 21 17:19:53 EST 2017\n\tLast de Acceso:
Miércoles 31 de diciembre, 18:59:59 hora del este de 1969\n\tType: ADMINISTRADO\n\tStorage(InputFormat:
org.apache.hadoop.mapred.TextInputFormat, OutputFormat:
org.apache.hadoop.la colmena.ql.io.HiveIgnoreKeyTextOutputFormat)), false\n:
+- Proyecto [document_id#0, topic_id#1, confidence_level#2]\n: +- SubqueryAlias my_table\n: +-
Relación[document_id#0,topic_id#1,confidence_level#2] csv\n»

InformationsquelleAutor Kabard | 2017-01-21

2 Comentarios

  1. 4

    He corregido este problema mediante el uso de HiveContext en lugar de SQLContext de la siguiente manera:

    import findspark
    findspark.init()
    import pyspark
    from pyspark.sql import HiveContext
    
    sqlCtx= HiveContext(sc)
    
    spark_df = sqlCtx.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("./data/documents_topics.csv")
    spark_df.registerTempTable("my_table")
    
    sqlCtx.sql("CREATE TABLE my_table_2 AS SELECT * from my_table")
    • Vale la pena señalar, ahora, que HiveContext() es obsoleto como de Chispa 2.2. La respuesta correcta ahora utiliza SparkSession.enableHiveSupport().getOrCreate() lugar.
  2. 0

    Primero debe realizar una selección y asignarlo a un dataframe variable y, a continuación, registrar con registerTempTable como lo hace con el dataframe creado desde el archivo CSV

Dejar respuesta

Please enter your comment!
Please enter your name here