es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo un error al crear una tabla de Hive utilizando una tabla Delta (con formato de parquet como base).

Obtengo una salida extraña cuando intento crear una tabla de Hive sobre Delta.

  • Spark: 2.4.7
  • Delta: 0.6.1
import java.io.File;
import org.apache.spark.{SparkConf, SparkContext};
import org.apache.spark.sql.{SparkSession, SQLContext};
import io.delta.tables.*;
import org.apache.spark.sql.functions;

spark.conf.set("spark.databricks.delta.symlinkFormatManifest.fileSystemCheck.enabled", false);

val df1 = "select col1,col2 from table1";
val df2 = spark.sql(sqlText=df_1);

df_2.write.format("delta").mode("overwrite").save("gs://<path>");

val deltaTable1 = DeltaTable.forPath("gs://<path>");

deltaTable1.generate("symlink_format_manifest");
CREATE EXTERNAL TABLE deltahivetable(col1 decimal(18,0),col2 string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat'    OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'gs://path/_symlink_format_manifest/'
TBLPROPERTIES("parquet.compression"="SNAPPY")

Sin embargo, obtengo todas las columnas con valores nulos y el recuento en la nueva tabla también es muy bajo.

¿Alguna idea?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con la forma en que se está creando la tabla externa. La salida sugiere que todos los valores de columna en la nueva tabla son nulos y el conteo es muy bajo.

    Una posible causa podría ser una discrepancia entre el esquema de Hive y el esquema real de los datos almacenados en Delta. Se recomienda asegurarse de que los esquemas coincidan antes de crear tablas externas sobre datos de Delta.

    Otro posible problema podría estar relacionado con el formato de almacenamiento de la tabla Delta. Es posible que el archivo _symlink_format_manifest generado por Delta no sea compatible con el formato esperado por la tabla externa. Podría valer la pena probar un formato de almacenamiento diferente y ver si eso resuelve el problema.

    Por último, podría valer la pena revisar los registros para ver si hay algún mensaje de error que pueda proporcionar más información sobre la causa raíz del problema.

Comments are closed.