Сканер определит тип столбца JSONB как строку, но вы можете попробовать использовать класс Unbox в Glue для преобразования этого столбца в json.
давайте проверим следующую таблицу в PostgreSQL
create table persons (id integer, person_data jsonb, creation_date timestamp )
Вот пример одной записи из таблицы людей
ID = 1
PERSON_DATA = {
"firstName": "Sergii",
"age": 99,
"email":"[email protected]"
}
CREATION_DATE = 2021-04-15 00:18:06
В Glue необходимо добавить следующий код.
# 1. create dynamic frame from catalog
df_persons = glueContext.create_dynamic_frame.from_catalog(database = "testdb", table_name = "persons", transformation_ctx = "df_persons ")
# 2.in path you need to add your jsonb column name that need to be converted to json
df_persons_json = Unbox.apply(frame = df_persons , path = "person_data", format="json")
# 3. converting from dynamic frame to data frame
datf_persons_json = df_persons_json.toDF()
# 4. after that you can process this column as a json datatype or create dataframe with all necessary columns , each json data element can be added as a separate column in dataframe :
final_df_person = datf_persons_json.select("id","person_data.age","person_data.firstName","creation_date")
Вы также можете проверить следующую ссылку:
https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-Unbox.html
person
Sergii Sholovii
schedule
16.04.2021