Soy bastante nuevo en AWS Glue y me gustaría saber cómo hacer lo siguiente:

  1. Extraiga un archivo CSV de una URL en AWS Glue
  2. Únase al conjunto de datos con una columna de una tabla que tengo en el Catálogo de datos.
  3. Vuelva a escribir esto en el catálogo de datos como una nueva tabla.

Hasta ahora tengo esto:

  tableA_DF = pandas.read_cv("https://example.com/file.csv")
  tableB = glueContext.create_dynamic_frame.from_catalog(database=Z, table_name = Y)
  tableB_DF = TableB.toDF()

Sin embargo, no estoy seguro de cómo unir los dos. Me gustaría simplemente agregar una columna de tableB a tableA, y luego almacenar el resultado en el catálogo de datos.

0
hn05 26 oct. 2020 a las 17:00

1 respuesta

La mejor respuesta

Puede leer directamente en Dynamicframe desde S3 usando create_dynamic_frame_from_options.

Lookupdata  = GlueContext.create_dynamic_frame_from_options(connection_type="s3",connection_options = {"paths":[InputLookupDir]},format="csv",format_options={"withHeader": True,"separator": ",","quoteChar": '"',"escaper": '"'})

Luego lea los datos del catálogo usando como se muestra a continuación:

datasource0 = GlueContext.create_dynamic_frame.from_catalog(database = Glue_catalog_database, table_name = Glue_table_name, transformation_ctx = "datasource0")

Luego puede unir dos marcos usando join y luego volver a escribir esto en el catálogo.

[joined_dyf][1] = Join.apply(Lookupdata,Join.apply(datasource0, Lookupdata,'someidfrom_datasource0','someidfrom_Lookupdata')

Ahora escriba esto en el catálogo como tabla, consulte este < / a> para más información:

sink = glueContext.getSink(connection_type="s3", path="s3://path/to/data",
                           enableUpdateCatalog=True, updateBehavior="UPDATE_IN_DATABASE",
                           partitionKeys=["partition_key0", "partition_key1"])
sink.setFormat("<format>")
sink.setCatalogInfo(catalogDatabase=<dst_db_name>, catalogTableName=<dst_tbl_name>)
sink.writeFrame(last_transform)
0
Prabhakar Reddy 27 oct. 2020 a las 03:53