Leo la tabla del catálogo de Glue, la convierto en marco de datos e imprimo el esquema usando lo siguiente (chispa con Python)
dyf = glueContext.create_dynamic_frame.from_catalog(database='database_name', table_name='table_name', redshift_tmp_dir=args['TempDir']) df = dyf.toDF() df.printschema() Funciona bien cuando la tabla tiene datos.
Pero, no imprime el esquema si la tabla está vacía (no puede obtener el esquema de una tabla vacía). Como resultado, las uniones futuras están fallando.
¿Hay alguna manera de superar esto y hacer que el marco dinámico obtenga el esquema de tabla del catálogo incluso para una tabla vacía o alguna otra alternativa?
Encontré una solución. No es ideal pero funciona. Si llama a apply_mapping() en su DynamicFrame, conservará el esquema en el DataFrame. Por ejemplo, si su tabla tiene la columna last_name , puede hacer lo siguiente:
dyf = glueContext.create_dynamic_frame.from_catalog(database='database_name', table_name='table_name', df = dyf.apply_mapping([ ("last_name", "string", "last_name", "string") ])toDF() df.printschema()