In de eerste post van deze serie, we hebben beschreven hoe AWS lijm voor Apache Spark werkt met Apache Hudi, Linux Foundation Delta Lake en Apache Iceberg datasets-tabellen met behulp van de native ondersteuning van die data lake-indelingen. Deze native ondersteuning vereenvoudigt het lezen en schrijven van uw gegevens voor deze datalake-frameworks, zodat u uw datalakes gemakkelijker op een transactieconsistente manier kunt bouwen en onderhouden. Met deze functie is het niet meer nodig om een afzonderlijke connector te installeren en zijn er minder configuratiestappen nodig om deze frameworks te gebruiken in AWS Glue voor Apache Spark-taken.
Met deze data lake-frameworks kunt u gegevens efficiënter opslaan en kunnen toepassingen sneller toegang krijgen tot uw gegevens. In tegenstelling tot eenvoudigere gegevensbestandsindelingen zoals Apache Parquet, CSV en JSON, die big data kunnen opslaan, organiseren data lake-frameworks gedistribueerde big data-bestanden in tabelstructuren die basisconstructies van databases op data lakes mogelijk maken.
Voortbordurend op de functionaliteit die we hebben aangekondigd op AWS re:Invent 2022, ondersteunt AWS Glue nu native Hudi, Delta Lake en Iceberg via de visuele editor van AWS Glue Studio. Als u liever AWS Glue voor Apache Spark-taken schrijft met behulp van een visuele tool, kunt u nu elk van deze drie data lake-frameworks als bron of doel kiezen via een grafische gebruikersinterface (GUI) zonder aangepaste code.
Zelfs zonder eerdere ervaring met het gebruik van Hudi, Delta Lake of Iceberg, kunt u gemakkelijk typische use cases bereiken. In dit bericht laten we zien hoe u gegevens die zijn opgeslagen in Hudi kunt opnemen met behulp van de visuele editor van AWS Glue Studio.
Voorbeeld scenario
Om de visuele editor-ervaring te demonstreren, introduceert dit bericht de Wereldwijd historisch klimatologisch netwerk dagelijks (GHCN-D) gegevensset. De gegevens zijn openbaar toegankelijk via een Amazon eenvoudige opslagservice (Amazon S3) emmer. Voor meer informatie, zie de Register van Open Data op AWS. U kunt ook meer leren in Visualiseer meer dan 200 jaar wereldwijde klimaatgegevens met behulp van Amazon Athena en Amazon QuickSight.
De Amazon S3-locatie s3://noaa-ghcn-pds/csv/by_year/
heeft alle waarnemingen van 1763 tot heden georganiseerd in CSV-bestanden, één bestand voor elk jaar. Het volgende blok toont een voorbeeld van hoe de records eruit zien:
De records hebben velden zoals ID, DATE, ELEMENT en meer. Elke combinatie van ID
, DATE
en ELEMENT
vertegenwoordigt een uniek record in deze dataset. Bijvoorbeeld de plaat met ID
as AE000041196
, ELEMENT
as TAVG
en DATE
as 20220101
is uniek.
In deze zelfstudie gaan we ervan uit dat de bestanden elke dag worden bijgewerkt met nieuwe records en dat we alleen de laatste record per primaire sleutel willen opslaan (ID
en ELEMENT
) om de nieuwste momentopnamegegevens bevraagbaar te maken. Een typische benadering is om een INSERT uit te voeren voor alle historische gegevens en de laatste records in query's te berekenen; dit kan echter extra overhead veroorzaken bij alle query's. Als u alleen de meest recente records wilt analyseren, kunt u beter een UPSERT (bijwerken en invoegen) uitvoeren op basis van de primaire sleutel en DATE
veld in plaats van alleen een INSERT om duplicaten te voorkomen en een enkele bijgewerkte rij met gegevens te behouden.
Voorwaarden
Om door te gaan met deze zelfstudie, moet u van tevoren de volgende AWS-bronnen maken:
Verwerk een Hudi-dataset in de visuele editor van AWS Glue Studio
Laten we een AWS Glue-taak schrijven om dagelijkse records in 2022 te lezen en de nieuwste momentopname in de Hudi-tabel op uw S3-bucket te schrijven met behulp van UPSERT. Voer de volgende stappen uit:
- Open AWS-lijmstudio.
- Kies Vacatures.
- Kies Visueel met een bron en doel.
- Voor bron en doelwit, kiezen Amazon S3, kies dan creëren.
Er verschijnt een nieuwe visuele taakconfiguratie. De volgende stap is het configureren van de gegevensbron om een voorbeeldgegevensset te lezen:
- Onder Visual, kiezen Gegevensbron – S3-bucket.
- Onder Knooppunt eigenschappenvoor S3-brontypeselecteer S3 locatie.
- Voor S3-URL, ga naar binnen
s3://noaa-ghcn-pds/csv/by_year/2022.csv
.
De gegevensbron is geconfigureerd.
De volgende stap is het configureren van het gegevensdoel om gegevens op te nemen in Apache Hudi op uw S3-bucket:
- Kies Gegevensdoel – S3-bucket.
- Onder Eigenschappen van gegevensdoel - S3voor Formaat, kiezen Apache Hudi.
- Voor Hudi-tabelnaam, ga naar binnen
ghcn
. - Voor Hudi-opslagtype, kiezen Kopiëren op schrijven.
- Voor Hudi-schrijfbewerking, kiezen opsteken.
- Voor Hudi-recordsleutelvelden, kiezen
ID
. - Voor Hudi Precombine-sleutelveld, kiezen
DATE
. - Voor Compressietype, kies GZIP.
- Voor S3 Doellocatie, ga naar binnen
s3://<Your S3 bucket name>/<Your S3 bucket prefix>/hudi_native/ghcn/
. (Geef de naam en het voorvoegsel van uw S3-bucket op.)
Configureer de taak om een tabeldefinitie te maken in de AWS Glue-gegevenscatalogus om het gemakkelijk te maken om de voorbeeldgegevens te ontdekken en deze ook bevraagbaar te maken vanuit Athena:
- Voor Update-opties voor gegevenscatalogusselecteer Maak een tabel in de gegevenscatalogus en werk bij volgende uitvoeringen het schema bij en voeg nieuwe partities toe.
- Voor Database, kiezen
hudi_native
. - Voor Tafel naam, ga naar binnen
ghcn
. - Voor Partitiesleutels – optioneel, kiezen
ELEMENT
.
Nu is uw taak voor gegevensintegratie volledig in de visuele editor geschreven. Laten we één resterende instelling over de IAM-rol toevoegen en vervolgens de taak uitvoeren:
- Onder Details van de baanvoor IAM-rol, kies uw IAM-rol.
- Kies Bespaar, kies dan lopen.
- Navigeer naar de Runs tabblad om de voortgang van de taak bij te houden en te wachten tot deze is voltooid.
Vraag de tafel met Athena
Nu de taak met succes de Hudi-tabel heeft gemaakt, kunt u de tabel opvragen via verschillende engines, waaronder Amazone Athene, Amazon EMR en Amazon Roodverschuivingsspectrum, naast AWS Glue voor Apache Spark.
Voer de volgende stappen uit om te zoeken via Athena:
- Open de query-editor op de Athena-console.
- Voer in de query-editor de volgende SQL in en kies lopen:
SELECT * FROM "hudi_native"."ghcn" limit 10;
De volgende schermafbeelding toont het queryresultaat.
Laten we diep in de tabel duiken om te begrijpen hoe de gegevens worden opgenomen en ons concentreren op de records met ID='AE000041196′.
- Voer de volgende query uit om u te concentreren op de zeer specifieke voorbeeldrecords
ID='AE000041196'
:
SELECT * FROM "hudi_native"."ghcn" WHERE ID='AE000041196';
De volgende schermafbeelding toont het queryresultaat.
Het originele bronbestand 2022.csv
heeft historische records voor record ID='USW00012894'
oppompen van 20220101
naar 20221231
, maar het queryresultaat toont slechts vier records, één record per ELEMENT
bij de laatste momentopname van de dag 20221230
or 20221231
. Omdat we de UPSERT-schrijfoptie gebruikten bij het schrijven van gegevens, hebben we het ID-veld geconfigureerd als een Hudi-recordsleutelveld, het DATE
veld als Hudi precombine veld, en de ELEMENT
veld als partitiesleutelveld. Wanneer twee records dezelfde sleutelwaarde hebben, kiest Hudi degene met de grootste waarde voor het precombine-veld. Toen de taak gegevens opnam, vergeleek het alle waarden in het DATE
veld voor elk paar ID
en ELEMENT
, en koos vervolgens het record met de grootste waarde in de DATE
veld.
Volgens het voorgaande resultaat konden we de nieuwste momentopname van alle gegevens van 2022 opnemen. Laten we nu een UPSERT doen van de nieuwe 2023-gegevens om de records in de doel-Hudi-tabel te overschrijven.
- Ga terug naar de AWS Glue Studio-console, wijzig de bron S3-locatie naar
s3://noaa-ghcn-pds/csv/by_year/2023.csv
, sla de taak op en voer deze uit.
- Voer dezelfde Athena-query uit vanaf de Athena-console.
Nu zie je dat de vier records zijn bijgewerkt met de nieuwe records in 2023.
Als u nog meer toekomstige records heeft, werkt deze aanpak goed om nieuwe records in te voegen op basis van de Hudi-recordsleutel en Hudi-precombinatiesleutel.
Opruimen
Nu naar de laatste stap, het opruimen van de bronnen:
- De AWS Glue-database verwijderen
hudi_native
. - Verwijder de AWS Glue-tabel
ghcn
. - Verwijder de S3-objecten eronder
s3://<Your S3 bucket name>/<Your S3 bucket prefix>/hudi_native/ghcn2022/
.
Conclusie
Dit bericht liet zien hoe Hudi-datasets kunnen worden verwerkt met behulp van de visuele editor van AWS Glue Studio. Met de visuele editor van AWS Glue Studio kunt u taken schrijven terwijl u profiteert van data lake-indelingen en zonder dat u daar expertise voor nodig heeft. Als u opmerkingen of feedback heeft, kunt u deze in de opmerkingen achterlaten.
Over de auteurs
Noritaka Sekiyama is een Principal Big Data Architect in het AWS Glue-team. Hij is verantwoordelijk voor het bouwen van software-artefacten om klanten te helpen. In zijn vrije tijd fietst hij graag met zijn nieuwe racefiets.
Scott lang is een Front End Engineer in het AWS Glue-team. Hij is verantwoordelijk voor het implementeren van nieuwe functies in AWS Glue Studio. In zijn vrije tijd houdt hij ervan om met vrienden om te gaan en deel te nemen aan verschillende buitenactiviteiten.
Sean Ma is een Principal Product Manager in het AWS Glue-team. Hij heeft meer dan 18 jaar ervaring in het innoveren en leveren van zakelijke producten die de kracht van data voor gebruikers ontsluiten. Naast zijn werk houdt Sean van duiken en universiteitsvoetbal.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://aws.amazon.com/blogs/big-data/part-2-glue-studio-visual-editor-introducing-native-support-for-apache-hudi-delta-lake-and-apache-iceberg-on-aws-glue-for-apache-spark/