In the era of big data, data is flooding from numerous data sources and many companies have been utilizing different types of tools to load and process data from various sources in a data lake. The major challenges where different companies are facing these days are how to update data into an existing dataset without having to read the entire dataset and overwriting it to accommodate the changes which have a negative impact on the performance. Besides this, finding a way to capture and track changed data in a big data lake as the system gets complex with large amounts of data to maintain and query is another challenge. Web platforms such as Hopsworks are also facing these problems without having an efficient mechanism to modify an existing processed results and pull out only changed data which could be useful to meet the processing needs of an organization. The challenge of accommodating row level changes in an efficient and effective manner is solved by integrating Hudi with Hops. This takes advantage of Hudi’s upsert mechanism which uses Bloom indexing to significantly speed up the ability of looking up records across partitions. Hudi indexing maps a record key into the file id without scanning over every record in the dataset. In addition, each successful data ingestion is stored in Apache Hudi format stamped with commit timeline. This commit timeline is needed for the incremental processing mainly to pull updated rows since a specified instant of time and obtain change logs from a dataset. Hence, incremental pulls are realized through the monotonically increasing commit time line. Similarly, incremental updates are realized over a time column (key expression) that allows Hudi to update rows based on this time column. HoodieDeltaStreamer utility and DataSource API are used for the integration of Hudi with Hops and Feature store. As a result, this provided a fabulous way of ingesting and extracting row level updates where its performance can further be enhanced by the configurations of the shuffle parallelism and other spark parameter configurations since Hudi is a spark based library. / I dag är stora data mängder vanligt förekommande bland företag. Typiskt så flödar datan från många datakällor och det är populärt bland företag att använda olika typer av verktyg för att läsa och bearbeta data i en data lake. En av de stora utmaningarna som företag står inför idag är att kunna uppdatera stora mängder data på ett effektivt sätt. Tidigare lösningar för att uppdatera stora mängder data är baserat på att skriva över datan, vilket är en ineffektiv metod. En ytterligare utmaning med stora data mängder är problemet av att bokföra ändringar till datan på ett effektivt sätt. Hopsworks är en webbplattform som lagrar och bearbetrar stora mängder data och står således inför dessa utmaningar. I denna avhandling så presenteras en lösning på problemet med att uppdatera stora datamängder på ett effektivt sätt. Lösningen är baserad på att integrera Hudi med Hops. Genom att integrera Hudi med Hops så kan Hops utnyttja Hudis mekanism för effektiv uppdatering av data. Mekanismen som används i Hudi för att uppdatera stora mängder dataär baserad på Bloom-indexering samt logg-baserad lagring av data. Hudi indexerar datan för att snabba upp uppdateringsoperationer. Dessutom så stödjer Hudi att varje uppdatering bokförs till en loggfil, vilket i praktiken fungerar som en tidslinje över datan. Genom att använda tidslinjen så stödjer Hudi att läsa stora datamängder inkrementellt, samt att inspektera datan vid specifika tidpunkter. I denna avhandling så beskrivs hur HoodieDeltaStreamer-verktyget samt Hudis DataSource API används för integrera Hudi med Hops Feature Store. Tack vare denna integration så möjligörs en mer effektiv och användbar uppdatering av stora datamängder i Hops.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-269548 |
Date | January 2019 |
Creators | Gebretsadkan Kidane, Netsanet |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2019:809 |
Page generated in 0.0024 seconds