Cómo crear una tabla como seleccionar en pyspark.sql

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 Kommentare

  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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea