100% found this document useful (13 votes)
2K views

Download full (Ebook) Data Ingestion with Python Cookbook: A practical guide to ingesting, monitoring, and identifying errors in the data ingestion process by Esppenchutz, Glaucia ISBN 9781837632602, 183763260X, 9781837699602, 183993260X ebook all chapters

The document is a promotional excerpt for the ebook 'Data Ingestion with Python Cookbook' by Gláucia Esppenchutz, which serves as a practical guide for ingesting, monitoring, and identifying errors in the data ingestion process. It includes information about the author, contributors, and a detailed table of contents outlining various topics related to data ingestion using Python. The ebook is published by Packt Publishing and is available for download in multiple formats.

Uploaded by

rapanredic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (13 votes)
2K views

Download full (Ebook) Data Ingestion with Python Cookbook: A practical guide to ingesting, monitoring, and identifying errors in the data ingestion process by Esppenchutz, Glaucia ISBN 9781837632602, 183763260X, 9781837699602, 183993260X ebook all chapters

The document is a promotional excerpt for the ebook 'Data Ingestion with Python Cookbook' by Gláucia Esppenchutz, which serves as a practical guide for ingesting, monitoring, and identifying errors in the data ingestion process. It includes information about the author, contributors, and a detailed table of contents outlining various topics related to data ingestion using Python. The ebook is published by Packt Publishing and is available for download in multiple formats.

Uploaded by

rapanredic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download Full Version ebook - Visit ebooknice.

com

(Ebook) Data Ingestion with Python Cookbook: A


practical guide to ingesting, monitoring, and
identifying errors in the data ingestion process
by Esppenchutz, Glaucia ISBN 9781837632602,
183763260X, 9781837699602, 183993260X
https://ebooknice.com/product/data-ingestion-with-python-
cookbook-a-practical-guide-to-ingesting-monitoring-and-
identifying-errors-in-the-data-ingestion-process-56143588

Click the button below to download

DOWLOAD EBOOK

Discover More Ebook - Explore Now at ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Biota Grow 2C gather 2C cook by Loucas, Jason;


Viles, James ISBN 9781459699816, 9781743365571,
9781925268492, 1459699815, 1743365578, 1925268497
https://ebooknice.com/product/biota-grow-2c-gather-2c-cook-6661374

ebooknice.com

(Ebook) Matematik 5000+ Kurs 2c Lärobok by Lena


Alfredsson, Hans Heikne, Sanna Bodemyr ISBN 9789127456600,
9127456609
https://ebooknice.com/product/matematik-5000-kurs-2c-larobok-23848312

ebooknice.com

(Ebook) SAT II Success MATH 1C and 2C 2002 (Peterson's SAT


II Success) by Peterson's ISBN 9780768906677, 0768906679

https://ebooknice.com/product/sat-ii-success-
math-1c-and-2c-2002-peterson-s-sat-ii-success-1722018

ebooknice.com

(Ebook) Master SAT II Math 1c and 2c 4th ed (Arco Master


the SAT Subject Test: Math Levels 1 & 2) by Arco ISBN
9780768923049, 0768923042
https://ebooknice.com/product/master-sat-ii-math-1c-and-2c-4th-ed-
arco-master-the-sat-subject-test-math-levels-1-2-2326094

ebooknice.com
(Ebook) Cambridge IGCSE and O Level History Workbook 2C -
Depth Study: the United States, 1919-41 2nd Edition by
Benjamin Harrison ISBN 9781398375147, 9781398375048,
1398375144, 1398375047
https://ebooknice.com/product/cambridge-igcse-and-o-level-history-
workbook-2c-depth-study-the-united-states-1919-41-2nd-edition-53538044

ebooknice.com

(Ebook) Practical Python Data Visualization: A Fast Track


Approach To Learning Data Visualization With Python by
Ashwin Pajankar ISBN 9781484264546, 9781484264553,
1484264541, 148426455X
https://ebooknice.com/product/practical-python-data-visualization-a-
fast-track-approach-to-learning-data-visualization-with-
python-12198306
ebooknice.com

(Ebook) Hands-On Entity Resolution: A Practical Guide to


Data Matching With Python by Shearer, Michael ISBN
9781098148485, 1098148487
https://ebooknice.com/product/hands-on-entity-resolution-a-practical-
guide-to-data-matching-with-python-55537528

ebooknice.com

(Ebook) Python data science cookbook : over 60 practical


recipes to help you explore Python and its robust data
science capabilities by Subramanian, Gopi ISBN
9781784393663, 9781784396404, 1784393665, 1784396400
https://ebooknice.com/product/python-data-science-cookbook-
over-60-practical-recipes-to-help-you-explore-python-and-its-robust-
data-science-capabilities-7231838
ebooknice.com

(Ebook) Mastering Machine Learning with Python in Six


Steps: A Practical Implementation Guide to Predictive Data
Analytics Using Python by Manohar Swamynathan (auth.) ISBN
9781484228654, 9781484228661, 1484228650, 1484228669
https://ebooknice.com/product/mastering-machine-learning-with-python-
in-six-steps-a-practical-implementation-guide-to-predictive-data-
analytics-using-python-5880904
ebooknice.com
Data Ingestion with Python
Cookbook

A practical guide to ingesting, monitoring, and identifying


errors in the data ingestion process

Gláucia Esppenchutz

BIRMINGHAM—MUMBAI
Data Ingestion with Python Cookbook
Copyright © 2023 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted
in any form or by any means, without the prior written permission of the publisher, except in the case
of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information
presented. However, the information contained in this book is sold without warranty, either express
or implied. Neither the author, nor Packt Publishing or its dealers and distributors, will be held liable
for any damages caused or alleged to have been caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and
products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot
guarantee the accuracy of this information.

Group Product Manager: Reshma Raman


Publishing Product Manager: Arindam Majumdar
Senior Editor: Tiksha Lad
Technical Editor: Devanshi Ayare
Copy Editor: Safis Editing
Project Coordinator: Farheen Fathima
Proofreader: Safis Editing
Indexer: Sejal Dsilva
Production Designer: Jyoti Chauhan
Marketing Coordinator: Nivedita Singh

First published: May 2023

Production reference: 1300523

Published by Packt Publishing Ltd.


Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.

ISBN 978-1-83763-260-2

www.packtpub.com
This book represents a lot and wouldn’t be possible without my loving husband, Lincoln, and his
support and understanding during this challenging endeavor. I want to thank all my friends that
didn’t let me give up and always boosted my spirits, along with my grandmother, who always believed,
helped, and said I would do big things one day. Finally, I want to thank my beloved and four-pawed
best friend, who is at peace, Minduim, for “helping” me to write this book.

– Gláucia Esppenchutz
Contributors

About the author


Gláucia Esppenchutz is a data engineer with expertise in managing data pipelines and vast amounts
of data using cloud and on-premises technologies. She worked in companies such as Globo.com,
BMW Group, and Cloudera. Currently, she works at AiFi, specializing in the field of data operations
for autonomous systems.
She comes from the biomedical field and shifted her career ten years ago to chase the dream of
working closely with technology and data. She is in constant contact with the open source community,
mentoring people and helping to manage projects, and has collaborated with the Apache, PyLadies
group, FreeCodeCamp, Udacity, and MentorColor communities.

I want to thank my patient and beloved husband and my friends. Thanks also to my mentors in the
Python open source community and the DataBootCamp founders, who guided me at the beginning
of my journey.
Thanks to the Packt team, who helped me through some hard times; you were terrific!
About the reviewers
Bitthal Khaitan is currently working as a big data and cloud engineer with CVS Health, a Fortune
4 organization. He has a demonstrated history of working in the cloud, data and analytics industry
for 12+ years. His primary certified skills are Google Cloud Platform (GCP), the big data ecosystem
(Hadoop, Spark, etc.), and data warehousing on Teradata. He has worked in all phases of the SDLC
of DW/BI and big data projects with strong expertise in the USA healthcare, insurance and retail
domains. He actively helps new graduates with mentoring, resume reviews, and job hunting tips in
the data engineering domain. Over 20,000 people follow Bitthal on LinkedIn. He is currently based
out of Dallas, Texas, USA.
Jagjeet Makhija is a highly accomplished technology leader with over 20 years of experience. They are
skilled not only in various domains including AI, data warehouse architecture, and business analytics,
but also have a strong passion for staying ahead of technology trends such as AI and ChatGPT.
Jagjeet is recognized for their significant contributions to the industry, particularly in complex proof
of concepts and integrating Microsoft products with ChatGPT. They are also an avid book reviewer
and have actively shared their extensive knowledge and expertise through presentations, blog articles,
and online forums.
Krishnan Raghavan is an IT professional with over 20 years of experience in the area of software
development and delivery excellence across multiple domains and technology, ranging from C++ to
Java, Python, data warehousing, and big data tools and technologies. Krishnan tries to give back to the
community by being part of GDG – Pune Volunteer Group, helping the team in organizing events.
When not working, Krishnan likes to spend time with his wife and daughter, as well as reading fiction,
non-fiction, and technical books. Currently, he is unsuccessfully trying to learn how to play the guitar.
You can connect with Krishnan at mail to: k r i s h n a n @ g m a i l . c o m or via
LinkedIn: www.linkedin.com/in/krishnan-raghavan

I would like to thank my wife, Anita, and daughter, Ananya, for giving me the time and space to
review this book.
Table of Contents

Prefacexv

Part 1: Fundamentals of Data Ingestion


1
Introduction to Data Ingestion 3
Technical requirements 4 How to do it… 17
Setting up Python and its environment 4 How it works… 21
See also 22
Getting ready 4
How to do it… 5 Creating schemas 22
How it works… 7 Getting ready 22
There’s more… 7 How to do it… 22
See also 7 How it works… 24
Installing PySpark 8 See also 25

Getting ready 8 Applying data governance in ingestion 25


How to do it… 10 Getting ready 25
How it works… 12 How to do it… 26
There’s more… 12 How it works… 28
See also 12 See also 28
Configuring Docker for MongoDB 13 Implementing data replication 29
Getting ready 13 Getting ready 29
How to do it… 13 How to do it… 29
How it works… 14 How it works… 29
There’s more… 16 There’s more… 30
See also 16
Further reading 30
Configuring Docker for Airflow 16
Getting ready 17
viii Table of Contents

2
Principals of Data Access – Accessing Your Data 31
Technical requirements 31 How to do it… 47
Implementing governance in a data How it works… 48
access workflow 32 There’s more… 49
Getting ready 32 See also 52
How to do it… 33 Managing encrypted files 52
How it works… 34 Getting ready 52
See also 34 How to do it… 53
Accessing databases and data How it works… 54
warehouses34 There’s more… 55
Getting ready 35 See also 56
How to do it… 35 Accessing data from AWS using S3 56
How it works… 37 Getting ready 56
There’s more… 38 How to do it… 59
See also 39 How it works… 62
Accessing SSH File Transfer Protocol There’s more… 63
(SFTP) files 39 See also 63
Getting ready 39 Accessing data from GCP using
How to do it… 41 Cloud Storage 64
How it works… 43 Getting ready 64
There’s more… 43 How to do it… 66
See also 44 How it works… 68
Retrieving data using API There’s more… 70
authentication44 Further reading 70
Getting ready 45

3
Data Discovery – Understanding Our Data before Ingesting It 71
Technical requirements 71 How to do it… 73
Documenting the data discovery How it works… 77
process71 Configuring OpenMetadata 77
Getting ready 72 Getting ready 77
Table of Contents ix

How to do it… 79 Getting ready 86


How it works… 84 How to do it… 88
There’s more… 86 How it works… 92
See also 86
Further reading 93
Connecting OpenMetadata Other tools 94
to our database 86

4
Reading CSV and JSON Files and Solving Problems 95
Technical requirements 95 How it works… 105
Reading a CSV file 96 There’s more… 106
See also 107
Getting ready 96
How to do it… 96 Using PySpark to read CSV files 108
How it works… 98 Getting ready 108
There’s more… 98 How to do it… 108
See also 99 How it works… 109
Reading a JSON file 99 There’s more… 110
See also 114
Getting ready 100
How to do it… 100 Using PySpark to read JSON files 114
How it works… 100 Getting ready 114
There’s more… 101 How to do it… 115
See also 103 How it works… 116
Creating a SparkSession for PySpark 103 There’s more… 117
See also 117
Getting ready 103
How to do it… 104 Further reading 117

5
Ingesting Data from Structured and Unstructured Databases 119
Technical requirements 119 There’s more… 127
Configuring a JDBC connection 120 See also 129

Getting ready 120 Ingesting data from a JDBC database


How to do it… 124 using SQL 129
How it works… 126 Getting ready 129
x Table of Contents

How to do it… 130 Getting ready 146


How it works… 132 How to do it… 146
There’s more… 133 How it works… 148
See also 133 There’s more… 149
See also 150
Connecting to a NoSQL
database (MongoDB) 134 Ingesting data from MongoDB
Getting ready 134 using PySpark 150
How to do it… 136 Getting ready 150
How it works… 142 How to do it… 151
There’s more… 144 How it works… 153
See also 145 There’s more… 155
See also 156
Creating our NoSQL table in
MongoDB145 Further reading 157

6
Using PySpark with Defined and Non-Defined Schemas 159
Technical requirements 159 How to do it… 169
Applying schemas to data ingestion 160 How it works… 170

Getting ready 160 Ingesting unstructured data with a


How to do it… 162 well-defined schema and format 172
How it works… 163 Getting ready 172
There’s more… 165 How to do it… 172
See also 165 How it works… 174
Importing structured data using a There’s more… 176
well-defined schema 165 See also 176

Getting ready 165 Inserting formatted SparkSession


How to do it… 165 logs to facilitate your work 176
How it works… 167 Getting ready 176
There’s more… 168 How to do it… 176
See also 169 How it works… 178
Importing unstructured data without There’s more… 179
a schema 169 See also 179

Getting ready… 169 Further reading 179


Table of Contents xi

7
Ingesting Analytical Data 181
Technical requirements 181 How it works… 197
Ingesting Parquet files 182 There’s more… 198
See also 200
Getting ready 182
How to do it… 183 Ingesting partitioned data 200
How it works… 184 Getting ready 200
There’s more… 185 How to do it… 201
See also 185 How it works… 201
Ingesting Avro files 185 There’s more… 203
See also 204
Getting ready 186
How to do it… 186 Applying reverse ETL 204
How it works… 188 Getting ready 204
There’s more… 190 How to do it… 205
See also 190 How it works… 206
Applying schemas to analytical data 191 There’s more… 207
See also 207
Getting ready 191
How to do it… 191 Selecting analytical data for reverse
How it works… 194 ETL207
There’s more… 194 Getting ready 207
See also 195 How to do it… 208
Filtering data and handling common How it works… 209
issues195 See also 210

Getting ready 195 Further reading 210


How to do it… 196

Part 2: Structuring the Ingestion Pipeline


8
Designing Monitored Data Workflows 213
Technical requirements 213 Getting ready 214
Inserting logs 214 How to do it… 214
How it works… 216
xii Table of Contents

See also 217 How it works… 229


There’s more… 229
Using log-level types 217
See also 230
Getting ready 217
How to do it… 217 Logging based on data 231
How it works… 219 Getting ready 231
There’s more… 220 How to do it… 231
See also 221 How it works… 232
There’s more… 233
Creating standardized logs 221
See also 233
Getting ready 222
How to do it… 222 Retrieving SparkSession metrics 234
How it works… 224 Getting ready 234
There’s more… 227 How to do it… 234
See also 227 How it works… 237
There’s more… 241
Monitoring our data ingest file size 227
See also 242
Getting ready 228
How to do it… 228 Further reading 242

9
Putting Everything Together with Airflow 243
Technical requirements 244 How to do it… 257
Installing Airflow 244 How it works… 260
There's more… 262
Configuring Airflow 244 See also 262
Getting ready 244
How to do it… 245 Configuring sensors 262
How it works… 247 Getting ready 262
See also 248 How to do it… 263
How it works… 264
Creating DAGs 248 See also 265
Getting ready 248
How to do it… 249 Creating connectors in Airflow 265
How it works… 253 Getting ready 266
There's more… 254 How to do it… 266
See also 255 How it works… 269
There's more… 270
Creating custom operators 255 See also 270
Getting ready 255
Table of Contents xiii

Creating parallel ingest tasks 270 Getting ready 274


Getting ready 270 How to do it… 275
How to do it… 271 How it works… 277
How it works… 272 There's more… 278
There's more… 273 See also 279
See also 274
Further reading 279
Defining ingest-dependent DAGs 274

10
Logging and Monitoring Your Data Ingest in Airflow 281
Technical requirements 281 Designing advanced monitoring 304
Installing and running Airflow 282 Getting ready 304
How to do it… 306
Creating basic logs in Airflow 283
How it works… 308
Getting ready 284
There’s more… 309
How to do it… 284
See also 309
How it works… 287
See also 289 Using notification operators 309
Getting ready 310
Storing log files in a remote location 289
How to do it… 312
Getting ready 289
How it works… 315
How to do it… 290
There’s more… 318
How it works… 298
See also 299 Using SQL operators for data quality 318
Getting ready 318
Configuring logs in airflow.cfg 299
How to do it… 320
Getting ready 299
How it works… 321
How to do it… 299
There’s more… 323
How it works… 301
See also 323
There’s more… 303
See also 304 Further reading 324

11
Automating Your Data Ingestion Pipelines 325
Technical requirements 325 Scheduling daily ingestions 326
Installing and running Airflow 326 Getting ready 327
xiv Table of Contents

How to do it… 327 There's more… 340


How it works… 330
Setting up the schedule_interval
There's more… 330
parameter340
See also 331
Getting ready 340
Scheduling historical data ingestion 331 How to do it… 341
Getting ready 331 How it works… 342
How to do it… 332 See also 342
How it works… 335
Solving scheduling errors 343
There's more… 336
Getting ready 343
Scheduling data replication 337 How to do it… 343
Getting ready 337 How it works… 346
How to do it… 338 There’s more… 347
How it works… 339
Further reading 347

12
Using Data Observability for Debugging, Error Handling,
and Preventing Downtime 349
Technical requirements 349 Getting ready 358
Docker images 350 How to do it… 358
How it works… 361
Setting up StatsD for monitoring 351 There’s more… 363
Getting ready 351
How to do it… 351 Creating an observability dashboard 363
How it works… 353 Getting ready 363
See also 354 How to do it… 363
How it works… 369
Setting up Prometheus for storing There’s more… 370
metrics354
Getting ready 354 Setting custom alerts or notifications 370
How to do it… 354 Getting ready 371
How it works… 356 How to do it… 371
There’s more… 357 How it works… 377

Setting up Grafana for monitoring 358 Further reading 378

Index379

Other Books You May Enjoy 388


Preface
Welcome to Data Ingestion with Python Cookbook. I hope you are excited as me to enter the world
of data engineering.
Data Ingestion with Python Cookbook is a practical guide that will empower you to design and implement
efficient data ingestion pipelines. With real-world examples and renowned open-source tools, this
book addresses your queries and hurdles head-on.
Beginning with designing pipelines, you’ll explore working with and without data schemas, constructing
monitored workflows using Airflow, and embracing data observability principles while adhering
to best practices. Tackling the challenges of reading diverse data sources and formats, you’ll gain a
comprehensive understanding of all these.
Our journey continues with essential insights into error logging, identification, resolution, data
orchestration, and effective monitoring. You’ll discover optimal approaches for storing logs, ensuring
easy access and references for them in the future.
By the end of this book, you’ll possess a fully automated setup to initiate data ingestion and pipeline
monitoring. This streamlined process will seamlessly integrate into the subsequent stages of the Extract,
Transform, and Load (ETL) process, propelling your data integration capabilities to new heights. Get
ready to embark on an enlightening and transformative data ingestion journey.

Who this book is for


This comprehensive book is specifically designed for Data Engineers, Data Integration Specialists, and
passionate data enthusiasts seeking a deeper understanding of data ingestion processes, data flows,
and the typical challenges encountered along the way. It provides valuable insights, best practices, and
practical knowledge to enhance your skills and proficiency in handling data ingestion tasks effectively.
Whether you are a beginner in the data world or an experienced developer, this book will suit you.
It is recommended to know the Python programming fundamentals and have basic knowledge of
Docker to read and run this book’s code.

What this book covers


Chapter 1, Introduction to Data Ingestion, introduces you to data ingestion best practices and the
challenges of working with diverse data sources. It explains the importance of the tools covered in
the book, presents them, and provides installation instructions.
xvi Preface

Chapter 2, Data Access Principals – Accessing your Data, explores data access concepts related to data
governance, covering workflows and management of familiar sources such as SFTP servers, APIs,
and cloud providers. It also provides examples of creating data access policies in databases, data
warehouses, and the cloud.
Chapter 3, Data Discovery – Understanding Our Data Before Ingesting It, teaches you the significance of
carrying out the data discovery process before data ingestion. It covers manual discovery, documentation,
and using an open-source tool, OpenMetadata, for local configuration.
Chapter 4, Reading CSV and JSON Files and Solving Problems, introduces you to ingesting CSV and JSON
files using Python and PySpark. It demonstrates handling varying data volumes and infrastructures
while addressing common challenges and providing solutions.
Chapter 5, Ingesting Data from Structured and Unstructured Databases, covers fundamental concepts
of relational and non-relational databases, including everyday use cases. You will learn how to read
and handle data from these models, understand vital considerations, and troubleshoot potential errors.
Chapter 6, Using PySpark with Defined and Non-Defined Schemas, delves deeper into common PySpark
use cases, focusing on handling defined and non-defined schemas. It also explores reading and
understanding complex logs from Spark (PySpark core) and formatting techniques for easier debugging.
Chapter 7, Ingesting Analytical Data, introduces you to analytical data and common formats for reading
and writing. It explores reading partitioned data for improved performance and discusses Reverse
ETL theory with real-life application workflows and diagrams.
Chapter 8, Designing Monitored Data Workflows, covers logging best practices for data ingestion,
facilitating error identification, and debugging. Techniques such as monitoring file size, row count,
and object count enable improved monitoring of dashboards, alerts, and insights.
Chapter 9, Putting Everything Together with Airflow, consolidates the previously presented information
and guides you in building a real-life data ingestion application using Airflow. It covers essential
components, configuration, and issue resolution in the process.
Chapter 10, Logging and Monitoring Your Data Ingest in Airflow, explores advanced logging and
monitoring in data ingestion with Airflow. It covers creating custom operators, setting up notifications,
and monitoring for data anomalies. Configuration of notifications for tools such as Slack is also covered
to stay updated on the data ingestion process.
Chapter 11, Automating Your Data Ingestion Pipelines, focuses on automating data ingests using
previously learned best practices, enabling reader autonomy. It addresses common challenges with
schedulers or orchestration tools and provides solutions to avoid problems in production clusters.
Chapter 12, Using Data Observability for Debugging, Error Handling, and Preventing Downtime,
explores data observability concepts, popular monitoring tools such as Grafana, and best practices
for log storage and data lineage. It also covers creating visualization graphs to monitor data source
issues using Airflow configuration and data ingestion scripts.
Preface xvii

To get the most out of this book


To execute the code in this book, you must have at least a basic knowledge of Python. We will use
Python as the core language to execute the code. The code examples have been tested using Python
3.8. However, it is expected to still work with future language versions.
Along with Python, this book uses Docker to emulate data systems and applications in our local
machine, such as PostgreSQL, MongoDB, and Airflow. Therefore, a basic knowledge of Docker is
recommended to edit container image files and run and stop containers.
Please, remember that some command-line commands may need adjustments depending on your local
settings or operating system. The commands in the code examples are based on the Linux command-
line syntax and might need some adaptations to run on Windows PowerShell.

Software/Hardware covered in the book OS Requirements

Python 3.8 or higher Windows, Mac OS X, and Linux (any)


Docker Engine 24.0 / Docker Desktop 4.19 Windows, Mac OS X, and Linux (any)

For almost all recipes in this book, you can use a Jupyter Notebook to execute the code. Even though it
is not mandatory to install it, this tool can help you to test the code and try new things on the code due
to the friendly interface.
If you are using the digital version of this book, we advise you to type the code yourself or access
the code via the GitHub repository (link available in the next section). Doing so will help you
avoid any potential errors related to the copying and pasting of code.

Download the example code files


You can download the example code files for this book from GitHub at https://github.com/
PacktPublishing/Data-Ingestion-with-Python-Cookbook. In case there’s an update
to the code, it will be updated on the existing GitHub repository.
We also have other code bundles from our rich catalog of books and videos available at https://
github.com/PacktPublishing/. Check them out!

Download the color images


We also provide a PDF file that has color images of the screenshots/diagrams used in this book. You
can download it here: https://packt.link/xwl0U
xviii Preface

Conventions used
There are a number of text conventions used throughout this book.
Code in text: Indicates code words in text, database table names, folder names, filenames, file
extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: “Then
we proceeded with the with open statement.”
A block of code is set as follows:

def gets_csv_first_line (csv_file):


    logging.info(f"Starting function to read first line")
    try:
        with open(csv_file, 'r') as file:
            logging.info(f"Reading file")

Any command-line input or output is written as follows:

$ python3 –-version
Python 3.8.10

Bold: Indicates a new term, an important word, or words that you see onscreen. For example, words
in menus or dialog boxes appear in the text like this. Here is an example: “Then, when we selected
showString at NativeMethodAccessorImpl.java:0, which redirected us to the
Stages page.”

Tips or important notes


Appear like this.

Sections
In this book, you will find several headings that appear frequently (Getting ready, How to do it..., How
it works..., There’s more..., and See also).
To give clear instructions on how to complete a recipe, use these sections as follows:

Getting ready
This section tells you what to expect in the recipe and describes how to set up any software or any
preliminary settings required for the recipe.

How to do it…
This section contains the steps required to follow the recipe.
Preface xix

How it works…
This section usually consists of a detailed explanation of what happened in the previous section.

There’s more…
This section consists of additional information about the recipe in order to make you more knowledgeable
about the recipe.

See also
This section provides helpful links to other useful information for the recipe.

Get in touch
Feedback from our readers is always welcome.
General feedback: If you have questions about any aspect of this book, mention the book title in the
subject of your message and email us at customercare@packtpub.com.
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen.
If you have found a mistake in this book, we would be grateful if you would report this to us. Please
visit www.packtpub.com/support/errata, selecting your book, clicking on the Errata
Submission Form link, and entering the details.
Piracy: If you come across any illegal copies of our works in any form on the Internet, we would
be grateful if you would provide us with the location address or website name. Please contact us at
copyright@packt.com with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in and you
are interested in either writing or contributing to a book, please visit authors.packtpub.com.
xx Preface

Share Your Thoughts


Once you’ve read Data Ingestion with Python Cookbook, we’d love to hear your thoughts! Please
click here to go straight to the Amazon review page for this book and share
your feedback.
Your review is important to us and the tech community and will help us make sure we’re delivering
excellent quality content.
Preface xxi

Download a free PDF copy of this book


Thanks for purchasing this book!
Do you like to read on the go but are unable to carry your print books everywhere?
Is your eBook purchase not compatible with the device of your choice?
Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.
Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical
books directly into your application.
The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content
in your inbox daily
Follow these simple steps to get the benefits:

1. Scan the QR code or visit the link below

https://packt.link/free-ebook/9781837632602

2. Submit your proof of purchase


3. That’s it! We’ll send your free PDF and other benefits to your email directly
Part 1:
Fundamentals
of Data Ingestion

In this part, you will be introduced to the fundamentals of data ingestion and data engineering,
passing through the basic definition of an ingestion pipeline, the common types of data sources, and
the technologies involved.
This part has the following chapters:

• Chapter 1, Introduction to Data Ingestion


• Chapter 2, Principals of Data Access – Accessing Your Data
• Chapter 3, Data Discovery – Understanding Our Data Before Ingesting It
• Chapter 4, Reading CSV and JSON Files and Solving Problems
• Chapter 5, Ingesting Data from Structured and Unstructured Databases
• Chapter 6, Using PySpark with Defined and Non-Defined Schemas
• Chapter 7, Ingesting Analytical Data
1
Introduction to Data Ingestion
Welcome to the fantastic world of data! Are you ready to embark on a thrilling journey into data
ingestion? If so, this is the perfect book to start! Ingesting data is the first step into the big data world.
Data ingestion is a process that involves gathering and importing data and also storing it properly
so that the subsequent extract, transform, and load (ETL) pipeline can utilize the data. To make it
happen, we must be cautious about the tools we will use and how to configure them properly.
In our book journey, we will use Python and PySpark to retrieve data from different data sources
and learn how to store them properly. To orchestrate all this, the basic concepts of Airflow will be
implemented, along with efficient monitoring to guarantee that our pipelines are covered.
This chapter will introduce some basic concepts about data ingestion and how to set up your
environment to start the tasks.
In this chapter, you will build and learn the following recipes:

• Setting up Python and the environment


• Installing PySpark
• Configuring Docker for MongoDB
• Configuring Docker for Airflow
• Logging libraries
• Creating schemas
• Applying data governance in ingestion
• Implementing data replication
4 Introduction to Data Ingestion

Technical requirements
The commands inside the recipes of this chapter use Linux syntax. If you don’t use a Linux-based
system, you may need to adapt the commands:

• Docker or Docker Desktop


• The SQL client of your choice (recommended); we recommend DBeaver, since it has a
community-free version

You can find the code from this chapter in this GitHub repository: https://github.com/
PacktPublishing/Data-Ingestion-with-Python-Cookbook.

Note
Windows users might get an error message such as Docker Desktop requires a newer WSL
kernel version. This can be fixed by following the steps here: https://docs.docker.
com/desktop/windows/wsl/.

Setting up Python and its environment


In the data world, languages such as Java, Scala, or Python are commonly used. The first two languages
are used due to their compatibility with the big data tools environment, such as Hadoop and Spark,
the central core of which runs on a Java Virtual Machine (JVM). However, in the past few years, the
use of Python for data engineering and data science has increased significantly due to the language’s
versatility, ease of understanding, and many open source libraries built by the community.

Getting ready
Let’s create a folder for our project:

1. First, open your system command line. Since I use the Windows Subsystem for Linux (WSL),
I will open the WSL application.
2. Go to your home directory and create a folder as follows:
$ mkdir my-project

3. Go inside this folder:


$ cd my-project

4. Check your Python version on your operating system as follows:


$ python -–version
Setting up Python and its environment 5

Depending on your operational system, you might or might not have output here – for example,
WSL 20.04 users might have the following output:
Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3

If your Python path is configured to use the python command, you will see output similar
to this:
Python 3.9.0

Sometimes, your Python path might be configured to be invoked using python3. You can
try it using the following command:
$ python3 --version

The output will be similar to the python command, as follows:


Python 3.9.0

5. Now, let’s check our pip version. This check is essential, since some operating systems have
more than one Python version installed:
$ pip --version

You should see similar output:


pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.9)

If your operating system (OS) uses a Python version below 3.8x or doesn’t have the language
installed, proceed to the How to do it steps; otherwise, you are ready to start the following Installing
PySpark recipe.

How to do it…
We are going to use the official installer from Python.org. You can find the link for it here: https://
www.python.org/downloads/:

Note
For Windows users, it is important to check your OS version, since Python 3.10 may not be
yet compatible with Windows 7, or your processor type (32-bits or 64-bits).

1. Download one of the stable versions.


At the time of writing, the stable recommended versions compatible with the tools and resources
presented here are 3.8, 3.9, and 3.10. I will use the 3.9 version and download it using the
following link: https://www.python.org/downloads/release/python-390/.
Scrolling down the page, you will find a list of links to Python installers according to OS, as shown
in the following screenshot.
6 Introduction to Data Ingestion

Figure 1.1 – Python.org download files for version 3.9

2. After downloading the installation file, double-click it and follow the instructions in the wizard
window. To avoid complexity, choose the recommended settings displayed.
The following screenshot shows how it looks on Windows:

Figure 1.2 – The Python Installer for Windows


Random documents with unrelated
content Scribd suggests to you:
— Eikä hän siis ollut ansainnut edes sitä, että tuosta lapsesta
sukeutui niin hyvätapainen ja että hän oli isälleen niin suuri ilo. Eikä
hänen sopinut lainkaan ajatella tämmöisiä asioita valmistautuessaan
parastaikaa rippiin.

*****

Sataa tuhuutteli, kun Simon tuli pimeässä kotiin päin


Romundgaardista. Hän oikaisi poikki pellon. Päivän viimeisessä
kalpeassa valossa häämötti sänki vaaleana ja märkänä. Vanhan
saunan seinän luona loisti jotakin valkoista maassa. Simon lähti
tarkastamaan mitä se oli. Siinä olivat ranskalaisen vadin palaset,
saman joka oli mennyt rikki keväällä. — Lapset olivat leikkiessään
latoneet palaset kivilaatalle, joka oli asetettu kahden toisen kiven
päälle. Simon töytäisi sitä kirveellään ja kaasi leikkipöydän —.

Hän katui samassa tekoaan. Mutta hän ei kärsinyt, että mikään


johti hänen mieleensä tuon illan.

Helpottaakseen hiukan tuntoaan salaamansa synnin johdosta hän


oli kertonut Sira Eirikille unistaan. Oli se tapahtunut senkin vuoksi,
että hänen oli täytynyt keventää sydäntään edes siitä. Hän oli jo ollut
lähtemäisillään — kun hän äkkiä tunsi, että hänen täytyi saada
puhua siitä. Tuo vanha puolisokea pappi oli sitäpaitsi ollut hänen
hengellinen isänsä enemmän kuin kaksitoista vuotta. Ja niin hän oli
palannut ovelta ja polvistunut uudelleen Sira Eirikin eteen.

Pappi istui liikkumatta, kunnes Simon oli puhunut puhuttavansa.


Sitten hän sanoi — ja tuo vanha, voimakas ääni kaikui verhottuna
pimeästä lausuen, ettei se ollut synti. Jokaisen taistelevan kirkon
jäsenen täytyi tulla koetelluksi kamppailussa vihollisen kanssa; siksi
sallii Jumala kiusattavan miestä monenlaisilla kiusauksilla. Siihen asti
kun mies ei heitä aseitaan — siihen asti kun hän ei petä kuninkaansa
lippua ja tietoisesti suostu näkyihin, joita epäpuhdas henki loihtii
hänen eteensä — siihen asti eivät synnilliset mielikuvittelut ole syntiä
—.

"En suostu!" Simonia kainostutti, kun hän kuuli oman äänensä.

Suostunut hän ei ollut koskaan. Ne kiusasivat, kiusasivat,


kiusasivat häntä. Herätessään noiden synnillisten unien jälkeen
tuntui hänestä kuin hänelle olisi tehty väkivaltaa nukkuessa.

*****

Kaksi vierasta hevosta seisoi aitaan sidottuna pihalla, kun Simon


saapui perille. Ne olivat Erlend Nikulauksenpojan Musta ja Kristiinan
ratsuhevonen. Hän huusi tallirenkiä ja kysyi, miksi niitä ei ollut viety
sisään. Siksi että vieraat olivat sanoneet, ettei se ollut tarpeellista,
vastasi toinen kärttyisästi.

Tuo nuori mies oli tullut Simonin palvelukseen äsken — hän oli
ennen palvellut Dyfrinissä. Siellä piti kaiken käydä ritaritapaan, sen
oli Helga saanut aikaan. Mutta jos tuo hupsu Sigurd luuli — siksi että
hän itse mielellään laski leikkiä miestensä kanssa eikä pannut
pahakseen sukkelaa vastausta — että täällä Formossa uskalletaan
mukista isäntää vastaan, niin hän saisi kyllä tietää —. Simon oli juuri
haukkumaisillaan miehen pataluhaksi — kun hän äkkiä hillitsi
itsensä; hänhän palasi juuri ripistä. Jon Daalk sai ottaa tuon
tulokkaan opetettavakseen ja hänen tuli selvittää miehelle, että hyvä
talonpoikaistapa oli yhtä vankka kuin Dyfrinin hovikoreus.

Ja niin hän kysyi mukiinmenevän maltillisesti, oliko Sigurd ollut


hölmölässä viime vuonna, ja käski hänen viedä hevoset talliin. Mutta
häntä suututti —.

*****

Ensimmäisenä sattui hänen silmänsä, kun hän astui sisään,


Erlendin nauravaan naamaan — pöydällä palavan kynttilän valo
lankesi suoraan penkillä istujaan tämän puolustautuessa Ulvhildia
vastaan, joka oli polvillaan hänen vieressään penkillä ja koetti kynsiä
Erlendiä, vai mitä lienee reuhannut — hän haroi sormillaan Erlendin
kasvoja vasten ja nauroi niin että oli läkähtyä.

Erlend kavahti pystyyn ja koetti hätistää lasta loitommalle, mutta


tämä tarttui hänen hihaansa ja jäi riippumaan käsivarteen Erlendin
astuessa lattian yli suorana ja kepein askelin ja tullessa tervehtimään
lankoansa. Tyttö mankui ja piti ääntä, niin että he tuskin voivat
erottaa toistensa puhetta.

Isä käski hänet palvelusnaisten luokse kotaan — nämä olivat juuri


saaneet pöydän katetuksi. Kun lapsi nurisi vastaan, tarttui Simon
tätä kovasti käsivarteen ja raastoi hänet erilleen Erlendistä.

"Tuoss' on —?" Tädin mies otti pihkapurun suustaan ja työnsi sen


lapsen suuhun. "Pidä hyvänäsi, Ulvhild umpukka! — Tästä sinun
tyttärestäsi, lanko", sanoi Erlend nauraen ja seuraten lasta
katseellaan, "ei tulekaan yhtä taipuisa kuin Arngjerdista."

Simon ei ollut malttanut olla kertomatta vaimolleen, kuinka


kauniisti Arngjerd oli taipunut hänen naimaehdotukseensa. Mutta ei
hän ollut tarkoittanut sitä jørundgaardilaisten kuultavaksi. Ei se ollut
Ramborgin tapaistakaan — Simon tiesi, ettei Ramborg pitänyt
Erlendistä. Häntä ei miellyttänyt se, että vaimo oli kertonut asiasta
eikä myöskään se, että Ulvhild näytti pitävän paljon Erlendistä —
hän, kuten kaikki naisenpuolet.

Hän meni tervehtimään Kristiinaa; tämä istui uunin vierusnurkassa


Andres sylissään. Poika oli ruvennut pitämään tädistään tämän
hoitaessa häntä toipumisaikana syksyisen taudin jälkeen.

Simon käsitti, että heillä oli asiaa hänelle, koska Erlend oli mukana
näin aivan odottamatta. Hän ei kuluttanut liioin Formon kynnyksiä.
Simonin täytyi tunnustaa Erlendin suoriutuvan ihmeteltävän hyvin
vaikeasta asemastaan — kun heidän välinsä olivat semmoiset kuin
olivat. Erlend väisti häntä niin paljon kuin suinkin, mutta he kävivät
toisissaan silloin tällöin, jottei olisi päästy juoruamaan sukulaisten
välisestä epäsovusta, ja he esiintyivät silloin mitä parhaina ystävinä;
Erlend oli hiljainen ja pidättyvä heidän tavatessaan, mutta osasi
sentään olla luonteva ja vapaa.

Kun ruoka oli kannettu pöytään ja olut tuotu esiin, ilmoitti Erlend
asiansa:

"Taidat ihmetellä asiaani, Simon — olemme tulleet kutsumaan


sinua ja
Ramborgia häihin —"

"Nyt sinä lasket leikkiä? Eihän sinun talossasi ole ketään


naimaikäistä?"

"Miten asian ottaa. Ulf Haldorinpoika aikoo naida —"

Simon läimäytti reisiään:

"No johan tässä nyt taitavat vetohärätkin ruveta poikimaan!"


"Älä sano Ulfia vetohäräksi", sanoi Erlend nauraen. "Sehän siinä on
paha, että mies on ollut liian kuumaverinen —"

Simon vihelsi. Erlend nauroi jälleen ja sanoi:

"En minä ollut uskoa silmiäni, kun Herbrandinpojat Medalheimistä


tänään ilmestyivät taloon ja vaativat Ulfia naimaan heidän
sisarensa."

"Herbrand Rembas —? Mutta nehän ovat aivan nuoria poikia —


eihän heidän sisarensa saata olla niin vanha, että Ulf —?"

"Hän on kahdenkymmenen vanha. Ja Ulf viidenkymmenen


korvissa. Niin." Erlend oli tullut vakavaksi. "Ymmärräthän sinä, Simon
— ettei tämä heistä ole kovin häävi naimakauppa; mutta kahdesta
pahasta on pienempi se paha, että Jardtrud joutuu naimisiin Ulfin
kanssa. Ja onhan Ulf ritarin poika ja varakas mies — ei hänen
tarvitse hakea leipäänsä toisen miehen kartanosta. Meitä hän seurasi
tänne siitä syystä, että mieluummin elää sukulaisten parissa kuin
istuu yksin omassa kartanossaan Skaunissa — sen jälkeen mitä on
tapahtunut —."

Erlend vaikeni. Hänen kasvoilleen levisi kaunis, herkkä ilme. Sitten


hän jatkoi:

"Nyt me olemme aikoneet Kristiinan kanssa viettää nuo häät aivan


kuin hän olisi oma veljemme. Lähdemme Ulfin kanssa etelään
Musudaliin nousevalla viikolla ja teemme naimatarjouksen
Medalheimissä. Näön vuoksi, ymmärräthän. Mutta minulla olisi ollut
sinulle pieni pyyntö, lanko. Olen sinulle kiitollisuuden velassa. Mutta
Ulfista ei pidetä näillä seuduin. Ja harvat ovat niin suuressa arvossa
kuin sinä — ja minä itse taas —" Hän kohautti olkaansa ja naurahti.
"Tahtoisitko sinä olla niin hyvä, Simon, että ratsastaisit kolmantena
mukaan ja rupeaisit Ulfin puhemieheksi? — Ulf ja minä olemme
kulkeneet yksissä poikavuosista asti", sanoi Erlend pyytelevästi.

"Tuohon käteen, lanko!" Simon oli punastunut — hän tunsi itsensä


niin kumman ujoksi ja avuttomaksi Erlendin avosydämisten sanojen
johdosta. "Teen mielelläni kaiken mitä voin Ulf Haldorinpojan
hyväksi."

Kristiina oli istunut tuvan perällä pitäen Andresta sylissään — poika


vaati välttämättä tätiä riisumaan hänet. Hän astui nyt valoon — lapsi
istui puolialastomana hänen käsivarrellaan, kädet tätinsä kaulassa.

"Se on kauniisti tehty, Simon!" sanoi Kristiina hiljaa ojentaen


kätensä. "Kiitos meidän kaikkien puolesta."

Simon tarttui hänen käteensä keveästi ja virkkoi:

"Älähän nyt, Kristiina. Minä olen aina pitänyt Ulfista — teen tämän
mielelläni." Hän tahtoi ottaa pojan Kristiinalta, mutta poika oli
olevinaan ja potki isää pienillä paljailla jaloillaan nauraen ja
puristautuen tätiinsä.

Simon kuunteli noiden kahden lepertelyä istuessaan puhellen


Erlendin kanssa Ulfin raha-asioista. Poika herahti nauramaan vähän
väliä — Kristiina osasi niin paljon lasten loruja ja leikkejä ja nauroi
hänkin hyrisevää, pehmeää kurkkunaurua. Kerran, kun Simon vilkaisi
sinne, hän oli tehnyt sormistaan jonkunlaiset kieruportaat, ja
Andreksen sormet olivat ihmisiä, jotka kiipesivät niitä ylös. Viimeinkin
hän sai pojan kätkyeen ja istuutui Ramborgin viereen. Sisaret
puhelivat keskenään kuiskaillen.
*****

Totta se oli, tuumi Simon makuulle mentyään, hän oli aina pitänyt
Ulfista. Ja tuon Oslossa vietetyn talven jälkeen, jolloin he olivat
yhdessä taistelleet Kristiinan auttamiseksi, hän oli tuntenut
jonkinlaisen ystävyydentunteen sitovan häntä tuohon mieheen. Hän
ei ollut milloinkaan pitänyt Ulfia muuna kuin vertaisenaan, ritarin
poikana — ja tämän oikeudeton asema isänsä suvussa siitä syystä,
että hän oli siitetty huoruudessa, sai aikaan vain sen, että Simon oli
sitäkin hellävaraisempi seurustellessaan hänen kanssaan — jossakin
hänen oman sydämensä sopukassa eli alati rukous Arngjerdin
menestyksen puolesta. Mutta muuten tämä ei ollut mikään kaunis
juttu — tuo puolivanha mies ja toisaalta kokematon lapsi. — Vaikka
eihän se häneen kuulunut, että Jardtrud Herbrandintytär oli
erehtynyt käydessään käräjillä kesällä — Simon ei ollut sukua heille,
ja Ulf oli hänen lankonsa lähisukulainen.

Ramborg oli pyytämättä tarjoutunut auttamaan Kristiinaa


ruokapöydässä häissä. Se oli Simonista hyvin tehty. Tarpeen
vaatiessa osoitti Ramborg aina minkälaisen kodin tytär hän oli. Hyvä
hän oli, ei siitä päässyt mihinkään.
V

Päivää jälkeen Katrinmessun piti Erlend Nikulauksenpoika


sukulaisensa häät erittäin komeasti. Paljon arvokasta väkeä oli
koolla. — Simon Darre oli huolehtinut siitä; hän ja hänen vaimonsa
olivat hyvin suositut kaikkialla. Molemmat Olavinkirkon papit olivat
siellä, ja Sira Eirik siunasi talon ja aviovuoteen — tätä pidettiin
suurena kunniana, sillä Sira Eirikin ei enää ollut tapana suorittaa
muuta kuin messut suurina pyhinä ja joskus muita toimituksia
vanhimmille rippilapsilleen. Simon Darre luki ääneen Ulfin hää- ja
huomenlahjasopimuksen, Erlend piti kauniin pöytäpuheen
sukulaisilleen ja Ramborg Lauritsantytär toimi apuna tarjoilussa
yhdessä sisarensa kanssa ja oli myös pukemassa morsianta
ylistuvassa.

Sittenkään ei syntynyt oikeata iloa näissä häissä. Morsian oli


vanhaa arvossapidettyä ja tunnettua sukua; hänen sukulaisensa ja
kulmakuntalaisensa eivät voineet katsoa hänen saaneen vertaistaan;
olihan hän joutunut ulkokuntalaiselle ja lisäksi miehelle, joka palveli
toisen, joskin sukulaisensa kartanossa. Ulfin syntyperä — ritarin ja
rikkaan miehen äpäräpoikana — ei enempää kuin hänen
sukulaisuutensa Erlend Nikulauksenpoikaan ollut Herbrandinpojista
kovin kunniakas.
Ei morsian itsekään ollut tyytyväinen asiain tilaan. Kristiina oli
aivan onnettoman näköinen puhuessaan tästä Simonille tämän
käväistessä asialla Jørundgaardissa muutamia viikkoja häiden
jälkeen. Jardtrud pyyteli lakkaamatta, että Ulf suostuisi muuttamaan
tilalleen Skauniin — hän oli sanonut itkien Kristiinan kuullen ettei hän
tiennyt mitään sen kamalampaa kuin että hänen lapsensa syntyisi
rengin poikana. Ulf ei ollut vastannut tähän mitään. Vastanaineet
asuivat siinä rakennuksessa, jota kutsuttiin neuvosmiehen tuvaksi
Jon Einarinpojan mukaan, joka oli asunut siinä ennen kuin Lauritsa
osti koko Laugarbrun ja muutti hänet sinne. Mutta tuo nimi ei ollut
Jardtrudin mieleen. Ja häntä harmitti, että hänen lehmiensä täytyi
olla Kristiinan navetassa —. hän pelkäsi sitäkin, ettei vain kukaan
luulisi häntä Kristiinan palveluspiiaksi. Eihän se ollut kovin
ihmeellistä, tuumi Kristiina — heidän täytyi rakennuttaa eri navetta
neuvosmiehentuvan viereen, ellei Ulf lähtenyt vaimonsa kanssa
Skauniin. Mikä olisi kenties ollut parasta — hän ei ollut enää niin
nuori, että olisi voinut vaikeuksitta muuttaa elintapaansa; ehkä
hänen elämänsä kävisi helpommaksi uudessa paikassa.

Simon ajatteli, ettei Kristiina tainnut olla aivan väärässä. Eikä


Ulfista pidetty koko laaksossa. Hän pilkkasi kaikkea täkäläistä. Hän
oli oivallinen ja aikaansaapa tilanhoitaja, mutta tottumaton moniin
tämän seudun oloihin — muun muassa hän jätti syksyllä eloon
suuremman karjan kuin minkä tämän puolen elannolla jaksoi elättää
talven yli — ja kun lehmät kuolivat tai hänen sittenkin täytyi tappaa
osa nääntynyttä karjaa, hän oli suutuksissaan ja sanoi, ettei hän ollut
tottunut sellaisiin töllintapoihin, että eläimiä täytyi ruokkia kaarnalla
jo Paavalinmessusta asti.

Ja vielä toinen seikka: Trøndelaagenissa oli isännän ja


vuokralaisen suhde vähitellen kääntynyt sellaiseksi, että isäntä vaati
maavuokran eniten tarvitseminaan tavaroina — heininä, nahkoina,
jauhoina, voina tai villoina — vaikka olisi ollut sovittu määrätavarasta
tai rahamaksusta. Ja tilan isäntä tai tämän asiamiehet myös arvioivat
maksujen määrän tavaran vaihtuessa usein hyvin mielivaltaisesti.
Mutta kun Ulf yritti sovittaa näitä vaatimuksia Kristiinan verollisiin
täällä, sanoivat ihmiset sitä vääryydeksi ja laittomuudeksi — mitä se
olikin — ja vuokralaiset valittivat asiasta Kristiinalle. Tämä nuhteli
Ulfia heti asiasta kuultuaan, mutta Simon tiesi, etteivät ihmiset
moittineet ainoastaan Ulfia, vaan myös Kristiina Lauritsantytärtä.
Simon oli koettanut selittää kaikkialla, missä asiasta tuli puhe, ettei
kartanon emäntä ollut tiennyt Ulfin vaatimuksista ja että miehen
kotipuolessa oli sellaiset tavat. Mutta Simon pelkäsi, ettei tästä ollut
suurta apua — vaikkakaan kukaan ei sanonut julkisesti häntä
vastaan.

Simon ei siis tiennyt, toivoisiko hän Ulfin menevän vai jäävän.


Miten Kristiina oli selviävä ilman tuota uutteraa ja uskollista
apulaista, oli vaikea käsittää. Erlendistä ei ollut mihinkään isännän
toimessa, ja heidän poikansa olivat liian nuoret. Mutta Ulf oli jo
kääntänyt koko seudun Kristiinaa vastaan — ja nyt sattui vielä lisäksi
tuo, että mies oli vietellyt nuoren neidon, jonka suku oli tämän
laakson parhaita. Mutta Kristiina raatoi jo kyllin ankarasti nytkin.

Jørundgaardilaisten asema ei ollut kovin helppo muutenkaan.


Erlendistä ei pidetty enempää kuin Ulfistakaan. Erlendin apulaista ja
sukulaista pidettiin ylpeänä ja hävyttömänä, mutta isäntä itse oli
lempeällä, hieman veltolla tavallaan vielä vaativampi. Erlend
Nikulauksenpoika ei varmaan huomannut, että hän nostatti ihmiset
vastaansa — hän ei näyttänyt huomaavan muuta kuin että hän oli
mikä oli aina ollut, olipa hän rikas tahi köyhä, eikä aavistanut, että
kukaan siitä syystä voisi sanoa häntä ylpeäksi. Hän oli ollut
kapinahankkeissa kuningastaan vastaan, mutta oli Maunu-kuninkaan
sukulainen, lääninherra ja aatelismies ja oli itse ajanut karille nuo
hankkeet järjettömällä kevytmielisyydellään — hän ei varmaan olisi
keksinyt edes ajatella, että moisten peikkojen vuoksi saattaisi joutua
konnan kirjoihin kenenkään silmissä. Simon ei yleensäkään ollut
huomannut Erlendin ajattelevan paljon.

Hänestä ei ollut helppo päästä perille: kun hänen kanssaan


keskusteli, ei hän ollut suinkaan tyhmä, mutta oli kuin ei hän
koskaan olisi sovittanut itseensä niitä viisaita ja kauniita ajatuksia,
joista hän usein puhui. Oli aivan mahdotonta ajatella, että tuo mies
oli jo pian vanha — hänellä olisi voinut olla isoja lapsenlapsia jo
aikaa sitten. Kun häntä katsoi tarkemmin, huomasi hänen
kasvoissaan olevan vakoja ja tukassa harmaita hiuksia — ja sittenkin
hän näytti poikansa Nikulauksen vierellä pikemmin veljeltä kuin
isältä. Hän oli yhtä suoraselkäinen ja notkea kuin Simonin nähdessä
hänet ensi kertaa, hänen äänensä oli yhtä nuorekas ja sointuva. Hän
liikkui ihmisten parissa yhtä huolettomasti ja varmasti kuin ennen,
omituinen viehkeys olemuksessaan. Hän oli ennenkin ollut vierasten
parissa hiljainen ja pidättyvä — antanut toisten hakea hänen
seuraansa enemmän kuin itse hakenut heitä, niin myötä- kuin
vastamäessä. Mutta hän ei näyttänyt huomaavan, ettei nyt kukaan
hakenut sitä. Ja seudun herrat ja mahtavimmat talonpojat laakson
ylä- ja alavarsilla, jotka olivat kaikki toisilleen sukua naimisten
kautta, olivat kimmastuneet tuolle trøndiläispöpölle, jonka
onnettomuus oli viskannut heidän keskuuteensa, mutta joka piti
itseään liian ylhäisenä ja mahtavana pyrkimään heidän seuraansa.

Eniten pahaa verta oli herättänyt Erlend Nikulauksenpoikaa


kohtaan kuitenkin se seikka, että hän oli vetänyt Sundbun miehet
kerallaan onnettomuuteen. Guttorm ja Borgar Trondinpojat oli ajettu
maanpakoon, ja heidän osansa laajoista Gjeslingien tiloista ynnä
puolet perintökartanosta joutui kruunun haltuun. Sundbun Ivarin
täytyi maksaa sovintorahoja Maunu-kuninkaalle. Kun Maunu-
kuningas sitten antoi kruunulle luovutetut maat — sanottiin, ettei se
tapahdu korvauksetta — ritari Sigurd Erlendinpoika Eldjarnille,
myivät Ivar ja Haavard, nuorin Trondinpojista, joka ei ollut tiennyt
veljensä kavallushankkeista, omat osansa Vaage-tiloista herra
Sigurdille, joka oli heidän ja Lauritsantyttärien serkku: hänen äitinsä,
Gudrun Ivarintytär oli Trond Gjeslingin ja Jørundgaardin Ragnfridin
sisar. Ivar Gjesling muutti Ringheimin kartanoon Toteniin, jonka hän
oli saanut vaimonsa kautta, hänen lapsensa saivat kasvaa äitinsä
suku- ja perintökartanossa. Haavardilla oli vielä suuret alat maata,
mutta ne olivat enimmäkseen Valdresin puolella, ja nyt hän oli
naimakaupallaan saanut suuria tiloja Borgen läänissä. Mutta
vaagelaisten ja norddølilaisten mielestä oli peräti onnetonta, että
tuon ikivanhan suvun oli täytynyt luopua Sundbusta, jossa se oli ollut
ja elänyt niin kauan kuin muistettiin.

— Lyhyen aikaa oli Sundbu ollut kuningas Haakon Haakoninpojan


uskollisen kannattajan, Erlend Eldjarnin, Godalandin herran käsissä
— Gjeslingit eivät olleet koskaan olleet Sverre-kuninkaan ja hänen
sukunsa lämpimiä kannattajia, ja he siirtyivät Skule-herttuan
puolelle, kun tämä nousi kapinaan Haakon kuningasta vastaan.
Mutta Ivar nuorempi oli saanut Sundbun takaisin Erlend Eldjarnilta
tilanvaihdon avulla ja naittanut tälle vanhimman tyttärensä Gudrunin.
Ivarin poika Trond ei ollut missään suhteessa tuottanut kunniaa
suvulleen, mutta hänen neljä poikaansa olivat reippaita,
hyväluontoisia ja rohkeita miehiä, ja ihmisiä säälitti, että he olivat
joutuneet menettämään isiensä kartanon.
Ja ennen kuin Ivar lähti laaksosta, tapahtui siellä onnettomuus,
joka järkytti ihmisiä vielä enemmän ja lisäsi heidän sääliään
Gjeslingejä kohtaan. Guttorm oli naimaton, mutta Borgarin nuori
vaimo eli Sundbussa. Dagny Bjarnentytär oli aina ollut hiukan
heikkoälyinen ja osoittanut julkisesti rakastavansa miestään
rajattomasti — Borgar Trondinpoika oli kaunis, mutta löyhätapainen.
Hänen maanpakonsa jälkeisenä talvena hukuttautui Dagny Vaagen
railoon. Sitä sanottiin onnettomuustapaukseksi, mutta kaikki
ymmärsivät surun ja kaipauksen vieneen Dagnyltä viimeisenkin
järjen kipinän, ja jokainen surkutteli sydämestään tuon
yksinkertaisen, hyvän ja kauniin nuoren naisen surkeata loppua.
Suuttumus suuntautui silloin Erlend Nikulauksenpoikaan, joka oli
tuottanut kaikki nämä onnettomuudet seudun parhaimmille. Ja nyt
joutui sekin puheeksi, miten hän oli käyttäytynyt sulhasaikanaan
Lauritsa Laamanninpojan tytärtä kohtaan — olihan Lauritsakin
Gjeslingejä äidin puolelta.

Uusi Sundbun isäntä ei saavuttanut suosiota, vaikka kukaan ei


oikeastaan voinut sanoa mitään pahaa Sigurdista itsestään. Mutta
hänen isänsä, Erlend Eldjarn, oli suututtanut tällä puolen maata
jokaisen, jolla oli ollut tekemistä hänen kanssaan. Kristiina ja
Ramborg eivät olleet tavanneet milloinkaan tätä serkkuansa. Simon
tunsi herra Sigurdin Raumariken ajalta — hän oli läheistä sukua
Haftorinpojille, ja nämä olivat Gyrd Darren vaimon lähimpiä omaisia.
Mutta vaikka nämä asiat olivat niin monimutkaisia, vältti Simon niin
paljon kuin suinkin herra Sigurdia. Hänen ei tehnyt enää mieli
Sundbuhun; Trondinpojat olivat olleet hänen rakkaita ystäviään,
Ramborg oli käynyt joka vuosi Ivarin ja Borgarin vaimoja
tervehtimässä, ja nämä häntä. Herra Sigurd Erlendinpoika oli sitä
paitsi paljon vanhempi Simon Andreksenpoikaa — hän oli noin
kuusissakymmenissä.
Kun kaikki asiat olivat sotkeutuneet niin pahoin siitä, että Erlend ja
Kristiina asuivat Jørundgaardissa, tuntui nyt Simonista siltä, että
vaikka Ulfin, heidän voutinsa, naiminen ei itsessään ollut mikään
suuri tapaus, oli se omiaan kuitenkin yhä lisäämään sekasotkua. Hän
ei tavallisesti valitellut nuorelle vaimolleen vaikeuksiaan ja
vastoinkäymisiään. Mutta nyt hän ei voinut olla kertomatta
Ramborgille hiukan näistä asioista. Ja hän tuli sekä hyvilleen että
ihmeisiinsä nähdessään, miten ymmärtävästi Ramborg osasi
keskustella niistä ja miten kauniisti hän koetti tehdä kaiken
voitavansa asiain auttamiseksi.

Ramborg kävi Jørundgaardissa sisarensa luona paljon useammin


kuin ennen ja luopui kokonaan töykeästä käytöksestään Erlendiä
kohtaan; kun he joulupäivänä kohtasivat kirkkomäellä, ei Ramborg
suudellut ainoastaan sisartaan, vaan myös lankoaan. Ennen hän oli
aina ivaillut kirpeästi Erlendin ulkomaalaisia elkeitä — esimerkiksi
sitä, että tämä suuteli anoppiaan tervehtiessä, ja sen sellaista.

Simonin mieleen juolahti, kun hän näki Ramborgin laskevan


kätensä Erlendin kaulalle, että hänkin saattoi tehdä samoin vaimonsa
sisarelle. Mutta hän tunsi, ettei hän kuitenkaan voinut. Eihän hänen
tapanaan ollut muutenkaan ollut suudella sukulaisvaimoja — äiti ja
sisaret olivat nauraneet hänelle vasten silmiä hänen koetettuaan
tuota konstia siihen aikaan, jolloin hän oli palannut kotiin
hovipalveluksesta.

Formon joulukesteissä asetti Ramborg Ulf Haldorinpojan nuoren


vaimon istumaan kunniakkaalle paikalle pöydän yläpäähän ja osoitti
sekä Ulfille että tämän vaimolle morsiusparille kuuluvaa kunnioitusta.
Ja kun Jardtrud sai lapsen, hän lähti tämän avuksi Jørundgaardiin.
Se tapahtui kuukausi joulun jälkeen — kaksi kuukautta ennen
määräaikaa, ja poika syntyi kuolleena. Silloin Jardtrud puhui rumia
sanoja — jos hän olisi arvannut käyvän tällä lailla, ei hän olisi
ollenkaan mennyt naimisiin Ulfin kanssa. Mutta tehtyä ei saanut
tekemättömäksi.

Ulf Haldorinpojan mieltä ei tiennyt kukaan — hän oli aivan vaiti.

*****

Puolipaaston edellisellä viikolla ratsastivat Erlend Nikulauksenpoika


ja Simon Andreksenpoika yhdessä Kvamiin. Muutamia vuosia ennen
kuolemaansa oli Lauritsa yhdessä parin muun isännän kanssa
ostanut sieltä pienehkön kartanon; suku tahtoi nyt lunastaa sen
takaisin itselleen, mutta oli kysymyksenalaista, oliko myynti
aikoinaan tapahtunut oikealla tavalla ja kaikkien lain määräysten
mukaan. Lauritsan perintöä jaettaessa oli tämä ynnä pari pienempää
tilaa, joiden omistuksesta saattoi syntyä käräjäasia, jätetty
koskematta, ja sisaret olivat tasanneet niistä karttuvat tulot. Siksi
lähtivät nyt Lauritsan molemmat vävyt ajamaan asiaa vaimojensa
puolesta.

Oli tullut sangen paljon väkeä koolle, ja koska tilanhaltijan vaimo


ja lapset makasivat sairaana tuvassa, täytyi miesten tyytyä pitämään
kokoustaan vanhassa vajassa, joka oli kartanon laidassa. Se oli hyvin
ränsistynyt ja laho, eivätkä miehet riisuneet nahkavaippojaan yltään.
Jokaisella oli aseensa aivan käden ulottuvilla ja miekka vyöllä —
kenenkään ei tehnyt mieli jäädä taloon kauemmaksi aikaa kuin oli
pakko. Mutta jotakin haukattavaa heidän kuitenkin täytyi saada
ennen lähtöään, ja puolipäivän aikaan, kun asia oli saatu ajetuksi
loppuun, miehet ottivat esiin eväänsä ja istuivat penkille eväsreppu
sylissään tai edessään lattialla — vajassa ei ollut pöytää.
Kvamin seurakuntapapin puolesta puhui hänen poikansa Holmgeir
Moiseksenpoika. Tämä oli huolimaton ja epäluotettava nuori mies,
josta ei pidetty. Mutta hänen isänsä oli erittäin kunnioitettu ja hänen
äitinsä oli ollut hyvin hyväsukuinen; Holmgeir oli sitä paitsi iso,
vankkarakenteinen mies, kiivas ja riidanhaluinen; siksi kukaan ei
tahtonut joutua suukopuun tämän papinpojan kanssa — vaikka hän
monien mielestä oli hupaisa ja sukkelasanainen.

Simon ei tuntenut häntä paljoa eikä pitänyt hänen näöstään. —


Holmgeirillä oli pitkulaiset, kalpeat, kesakkoiset kasvot ja lyhyt
ylähuuli, joten hänen suuret keltaiset etuhampaansa kiiluivat kuin
rotalla. Mutta Sira Moises oli ollut Lauritsan ystävä, ja ennen kuin
hänen isänsä otti hänet lapsekseen, oli poika ollut kasvatettavana
Jørundgaardissa, puoleksi palvelijana, puoleksi ottopoikana. Siksi
Simon oli aina kohdellut Holmgeir Moiseksenpoikaa ystävällisesti.

Holmgeir oli nyt vierittänyt pölkyn lieden ääreen ja istui pistellen


evästä — rastaspaistin ja läskin kappaleita — tikarinsa kärkeen,
lämmitellen niitä tulella. Hän oli ollut sairas ja saanut kahden viikon
paastovapauden, kertoi hän toisille, jotka pureksivat leipää ja
kuivattua kalaa Holmgeirin ruoan hajun kutkuttaessa heidän
nenäänsä.

Simon oli huonolla tuulella — hän ei osannut olla oikein


vihoissaankaan, mutta oli jollakin tapaa nolo ja myrryksissä. Koko
omaisuusjuttu oli sekava, ja sopimuskirjat, jotka hän oli saanut
haltuunsa appiukon kuoltua, harmillisen huonosti kirjoitetut; kotoa
lähtiessään hän oli kuitenkin uskonut päässeensä niistä tolkulle
vertaamalla niitä toisiin samanlaisiin. Mutta kuullessaan nyt tässä
kokouksessa toisten todistelut ja nähdessään muutkin sopimuskirjat
hän huomasi, ettei hänen kantansa pitänyt paikkaansa. Mutta
toisista miehistä ei myöskään kukaan saanut parempaa selvää
asiasta — ei edes lääninherran lääninvouti, joka myös oli läsnä.
Alettiin arvella, että asia oli vietävä käräjille. Silloin Erlend
odottamatta puuttui puheeseen ja pyysi saada nähdä sopimuskirjat.

Hän oli siihen asti istunut kuunnellen, melkein syrjäisen tavoin. Nyt
hän luki tarkasti läpi jokaisen kirjoituksen, muutamat moneen
kertaan. Sitten hän teki selkoa asian laidasta, lyhyesti ja selvästi —
niin ja niin kuuluivat lakikirjan sanat ja siten ne selitettiin; kirjojen
kömpelöt ja epäselvät käänteet tarkoittivat sitä ja sitä; jos asia
joutuisi käräjille, se saisi sellaisen tai sellaisen ratkaisun. Tämän
jälkeen hän ehdotti ratkaisua, johon entiset omistajat saattoivat olla
tyytyväiset, mutta joka ei ollut varsin epäedullinen nykyisillekään
isännille.

Hän nousi seisomaan puhuessaan, vasen käsi keveästi


miekankahvalla ja sopimuskirjapakka huolettomasti oikeassa. Hän
esiintyi niin kuin olisi ollut kokouksen johtaja — mutta Simon
huomasi, ettei hän tiennyt sitä itse. Näin hän oli tottunut seisomaan
ja puhumaan pitäessään lääninkäräjiä alueellaan — ja kun hän
kääntyi toisten puoleen kysyen, olivatko he ymmärtäneet hänen
selityksensä ja eivätkö he olleet samaa mieltä, se tapahtui aivan kuin
todistajia kuulusteltaessa — ei epäkohteliaasti, mutta kuitenkin siten
kuin hänen asiansa olisi ollut kysyä ja toisten vastata. Lopetettuaan
puheensa hän ojensi kirjoitukset lääninvoudille, ikään kuin tämä olisi
ollut hänen palvelijansa, ja istuutui; toisten sitten neuvotellessa ja
Simoninkin sanottua sanansa asiasta Erlend kyllä kuunteli, mutta
aivan kuin hän itse olisi ollut ulkopuolella asian. Hän vastasi lyhyesti,
selvästi ja osuvasti, kun joku kääntyi hänen puoleensa — raapien
samalla kynnellään pois rasvatahroja, joita oli tullut hänen
rintamukseensa, oikaisten vyötään, vedellen hansikkaitaan käsiensä
välissä ja näyttäen odottavan hiukan kärsimättömästi neuvottelun
loppumista.

Toiset suostuivat Erlendin ehdottamaan sopimukseen, johon Simon


saattoi olla jotakuinkin tyytyväinen; hän olisi tuskin voittanut mitään
asian viemisellä käräjiin.

Mutta hän oli tullut huonolle tuulelle. Hänestä oli itsestäänkin


lapsellista harmitella sitä, että lanko oli ymmärtänyt asian, mutta hän
ei. Olihan luonnollista, että Erlend tunsi paremmin lain ja osasi
selittää epäselvät paikat, kun hän oli vuosikausia saanut virkansa
puolesta tutkia ja selvitellä ihmisten riita-asioita: eilen illalla
Jørundgaardissa puhuessaan Simonin ja Kristiinan kanssa tästä
kokouksesta ei Erlend ollut ilmaissut mitään kantaa — hän oli
varmaan kuunnellut vain toisella korvalla. Erlendin täytyi olla
laintuntevampi kuin tavalliset talonpojat, niin oli laita — mutta oli
kuin ei laki olisi ollenkaan koskenut häntä itseään hänen istuessaan
siinä ohjaamassa toisia välinpitämättömän ystävällisesti — Simonilla
oli se tunne, ettei Erlend ollut milloinkaan pitänyt lakia
ojennusnuorana omassa elämässään.

Ja sitten oli niin outoa, että hän saattoi tuolla tapaa nousta
puhumaan yhtäkkiä ollenkaan hämmentymättä. Täytyihän hänen
tuntea, että se johtaisi kaikkien ajatukset siihen, kuka ja mikä hän oli
ollut ennen ja mikä hänen asemansa oli nyt. Simon tunsi kaikkien
ajattelevan sitä, — useita kai närkästytti koko mies, joka ei ollut
milloinkaan välittänyt ottaa selvää siitä mitä ihmiset ajattelivat
hänestä.

Mutta kukaan ei sanonut mitään. Ja kun kylmästä värjöttävä


kirkonmies, joka oli tullut lääninvoudin mukana, oli istuutunut
penkille ja ottanut kirjoitusvehkeet polvelleen, hän kysyi vähän väliä
Erlendin neuvoa, ja Erlend saneli hänelle nyplien oljenkortta, jonka
hän oli nostanut lattialta ja jota hän nyt punoi pitkien ruskeiden
sormiensa ympärille palmikoiden siitä sormusta. Kun kirkonmies oli
saanut valmiiksi sepustuksen, hän ojensi vasikannahan Erlendille;
tämä heitti olkisormuksen tuleen, otti kirjoituksen ja luki
puoliääneen:

"Jokaiselle, joka tämän kirjoituksen näkee tai kuulee, lähetämme


me Simon Andreksenpoika, Formon herra, Erlend Nikulauksenpoika,
Jørundgaardin herra, Vidar Steininpoika, Klaufastadin herra,
Ingemund ja Toraide Bjørninpojat, Bjørn Ingemundinpoika, Lundarin
herra, Alf Einarinpoika ja Holmgeir Moiseksenpoika tervehdyksen
Herrassa ja —. Onko vaha valmiina?" kysyi hän kirkonmieheltä
sormiaan puhallellen. "Olkoon täten tiedoksiannettu, että vuonna
tuhat ja kolmesataa ja kolmekymmentäkahdeksan jälkeen Herramme
Kristuksen syntymän, perjantaina ennen puolipaaston sunnuntaita,
päätimme me Granheimissa, Kvamin seurakunnassa…"

— Voimme ottaa pöydäksi arkun, joka on ulkona porstuassa, Alf,


kääntyi hän sanomaan lääninvoudille ja ojensi kirjeen takaisin
kirjoittajalle.

Simon muisti millainen Erlend oli ollut liikkuessaan vertaistensa


parissa pohjoisessa. Varma ja kursailematon, kuten hän oli nytkin —
vallaton ja suorasuinen — mutta hänessä oli ollut lisäksi jotakin
mairittelevaa: hän ei ollut silloin välinpitämätön siitä, mitä ne, joita
hän piti säätyisinään ja sukulaisinaan, ajattelivat hänestä. Hän oli
päinvastoin oikein koettelemalla koettanut saavuttaa suosiota siellä.

Simon tunsi äkkiä kylmänkatkerin mielin yhteenkuuluvaisuutensa


näihin laakson talonpoikiin, joita Erlend ei pitänyt senkään vertaa
arvossa, että olisi viitsinyt ottaa selvää, mitä he ajattelivat hänestä.
Erlendin tähden oli hänestäkin tullut talonpoika — hänen tähtensä
hän oli eronnut rikkaiden ja mahtavien parista. Kelpasihan hänen olla
Formon rikas isäntä — mutta hän ei voinut unohtaa, että hän oli
jättänyt vertaisensa, heimonsa ja nuoruudenystävänsä siksi, että
hänen oli täytynyt kiertää kerjuulla näiden joukossa ja ettei hän sen
vuoksi iljennyt enää näyttäytyä heidän parissaan — ei, hän ei
tahtonut ajatella sitä. Tämän lankonsa vuoksi hän oli melkein
luopunut kuninkaastaan ja henkivartion piiristä. Hän oli ilmaissut
itsensä Erlendille niin, että sitä oli kuolemaa katkerampi muistella. Ja
Erlend oli häntä kohtaan sellainen kuin ei hän olisi ymmärtänyt
mitään eikä muistanut mitään. Tuo mies vähätteli sitä, että oli
tuhonnut toisen miehen elämän.

Erlend puhutteli häntä samassa.

"Meidän on aika lähteä matkaan, Simon, jos mieli kotiin tänä iltana
— minä käyn katsomassa hevosia." — Simon nosti silmänsä, ja
hänessä heräsi outo, ilkeä vastenmielisyyden tunne, kun hän katsoi
toisen pitkää, komeaa vartta. Viitanhupun alla oli Erlendillä pieni
musta päänmuotoinen silkkilakki, joka sidottiin leuan alta — nuo
kapeat, tummat kasvot vaaleansinisine, syvällä otsan varjossa
piilevine suurine silmineen näyttivät vieläkin nuoremmilta ja
hienommilta sen sisällä. "— Sido sinä kiinni minun reppuni sillä
aikaa", sanoi hän ovelta ulos lähtiessään.

Toiset miehet jatkoivat puhetta kokousasiasta. Oli outoa, että


Lauritsa oli jättänyt tämän asian näin huonolle selvitykselle, tuumi
joku; se mies tiesi tavallisesti mitä teki — hän oli kokenein kaikista
laakson miehistä maan ostoa ja myyntiä koskevissa kysymyksissä.

"Minun isäni siihen on syynä", lausui Holmgeir Papinpoika. "Hän


sanoi itse aamulla, että jos hän olisi kuunnellut Lauritsaa, olisi kaikki
nyt ollut selvä kuin päivä. Mutta tiedättehän te millainen Lauritsa oli
tämmöisissä asioissa — hän oli aina pappeja kohtaan myöntyisä ja
lauhkea kuin lammas."

"Mutta oman etunsa oli Lauritsa sentään tavallisesti osannut


katsoa", virkahti joku.

"Niin hän kai luulikin tekevänsä kuullessaan papin neuvoa", sanoi


Holmgeir nauraen, "saattaa se olla viisasta ajallisissakin asioissa —
jollei vilkuile palaa, johon kirkko on iskenyt silmänsä."

Kumman hurskas Lauritsa vain oli ollut, arveli Vidar — ei hän ollut
koskaan säälinyt maata eikä karjaa, kun oli kysymys kirkosta ja
vaivaisista.

"Aivan niin", sanoi Holmgeir mietteissään. "Jos minä olisin ollut


yhtä rikas, olisin kai minäkin uhrannut jonkin verran sieluni
pelastukseksi. Mutta en minä olisi viitsinyt hajottaa omaisuuttani
molemmin käsin, kuten hän teki, ja palata kuitenkin aina silmät
punaisina ja posket valkoisina papin luota synnintunnustukselta —
vaikka Lauritsa ripitti itsensä kerran kuukaudessa —."

"Katumuksen kyyneleet ovat pyhän hengen kaunis armolahja,


Holmgeir", sanoi vanha Ingemund Bjørninpoika, "autuas se, joka
osaa itkeä syntejään tässä elämässä, sillä hän pääsee helpommalla
tulevassa —"

"Silloin on Lauritsa ollut taivaassa jo aikaa sitten", vastasi


Holmgeir. "Muistan miten hän paastosi ja kidutti lihaansa —
pitkänäperjantaina hän kuuluu sulkeutuneen parveen ja suomineen
itseään ruoskalla —"
"Pidä suusi", sanoi Simon Andreksenpoika vihasta vapisten; hän oli
tulipunainen. Ei hän tiennyt, oliko Holmgeirin puheessa perää, mutta
penkoessaan vaimonsa isän kätköjä hän oli löytänyt kirja-arkun
pohjalta pienen kapean puisen lippaan, ja siinä oli ollut sellainen
ruoska, jota luostarissa kutsutaan ojennusnuoraksi; sen
yhteenpunotuissa nahkahihnoissa oli tummia täpliä; se saattoi olla
verta. Simon oli polttanut sen — haikean kunnioituksen tuntein: hän
ymmärsi tunkeutuneensa sellaiselle alalle toisen ihmisen elämässä,
joka ei ollut aiottu kenenkään kuolevaisen tietoon.

"— Ei hän puhunut siitä ainakaan palvelijoilleen", sanoi Simon


hillittyään mielensä sen verran, että uskalsi jatkaa.

"Voi se olla ihmisten keksintöäkin", vastasi Holmgeir sopuisasti. "Ei


suinkaan hänellä ollut sellaisia syntejä, että hänen olisi tarvinnut —."
Mies virnaili vähän ja jatkoi: — "Jos minä olisin elänyt yhtä
siveellisesti ja kristillisesti kuin Lauritsa Bjørgulfinpoika — ja ollut
tuon nyrpeän Rangfrid Ivarintyttären mies — olisin ennen itkenyt
tekemättä jättämiäni syntejä —"

Simon hyppäsi paikaltaan ja löi Holmgeiriä vasten suuta niin että


tämä tuupertui taapäin tulisijaa vasten. Tikari putosi Holmgeirin
kädestä — seuraavalla hetkellä hän tapaa sen käteensä ja ryntää
Simonia kohti. Simon suojelee itseään viittansa peittämällä kädellä,
tarttuu Holmgeiriä ranteeseen ja koettaa vääntää hänen kädestään
tikaria — jolla aikaa papinpoika ehtii antaa hänelle pari nyrkiniskua
kasvoihin. Simon käy kiinni pojan molempiin käsivarsiin, mutta silloin
tämä iskee hampaansa hänen käteensä.

"Vai puret sinä, koira —!" Simon päästää hänen kätensä, juoksee
jonkin askeleen takaperin ja tempaa miekkansa huotrasta. Hän
hyökkää päin Holmgeiriä, niin että tuo nuori ruumis notkistuu
kaarelle, ja miekka tunkeutuu hänen rintaansa parin tuuman
pituudelta. Heti tämän jälkeen irtautuu Holmgeirin ruumis
miekanterästä ja vaipuu raskaasti puolittain lieden tuleen.

Simon viskaa pois miekkansa ja tahtoo auttaa Holmgeiriä pois


tulen luota — mutta samassa hän näkee Vidarin kirveen aivan
päänsä päällä. Hän väistää ja kumartuu alas, saa jälleen miekan
käteensä ja ehtii lyödä tieltään Alf Einarinpojan, lääninvoudin miekan
— pyörähtää sitten ympäri suojaten itseään Vidarin kirvestä vastaan
— ja näkee samassa silmäkulmallaan Bjørninpoikien ja Bjørnin,
Lunden herran, tähtäävän häneen keihäänsä kärjellä tuolta puolen
lieden. Hän ajaa silloin Alfia edellään vastaista seinää kohti, mutta
huomaa Vidarin lähestyvän häntä selästäpäin — Vidar oli raahannut
Holmgeirin lieden laidalta, he olivat serkkuja — ja Lunden miehet
olivat tulemassa toiselta suunnalta. Hän oli saarrettu joka puolelta —
ja kesken henkensä puolustusta liikahtaa hänessä arka, onneton
ihmetys, että he kaikki saattavat olla hänen ainoan kimpussa.

Samassa silmänräpäyksessä välkähtää Erlendin miekka Lunden


miesten ja Simonin välissä. Toralde horjahtaa tieltä ja nojaa seinään.
Salamannopeasti vaihtaa Erlend miekan vasempaan käteensä ja lyö
miekan Alfin kädestä, niin että se lentää kilisten lattiaa pitkin, ja
tarttuu samassa oikealla kädellään Bjørnin keihääseen taivuttaen sen
alas.

"Mene ulos", sanoo hän huohottaen Simonille suojellen lankoaan


Vidaria vastaan. Simon puree hampaansa yhteen ja juoksee keskelle
tupaa ottelemaan Bjørnin ja Ingemundin kanssa. Erlend seisoo
hänen sivullaan ja huutaa melun ja aseenkalinan keskeltä: "Mene
ulos, senkin — nauta! Pyri ovelle — meidän täytyy päästä ulos!"
Älyttyään Erlendin tarkoittavan, että he kumpikin yrittäisivät ulos,
hän vetäytyi selkä edeltä, kaiken aikaa taistellen, vajan ovea kohti.
He juoksivat porstuan läpi ja olivat pihalla — Simon pari askelta
etempänä talosta, Erlend vielä oven edessä, miekkaa pitelevä käsi
koholla ja kasvot miehiä kohti, jotka ryntäsivät ulos perästä.

Silmänräpäykseksi Simon aivan kuin sokeni — talvipäivä oli niin


häikäisevän kirkas ja pistävä — sinisen taivaan alla paistoi valkoinen
tunturi painuvan auringon kultaamana, ja metsä oli aivan lumen ja
kuuran peitossa. Lumiset kentät säihkyivät ja kimmelsivät kuin kalliit
kivet.

Hän kuuli Erlendin sanovan:

"Ei se paranna onnettomuutta, että täällä tapahtuu useampia


tappoja.
Käyttäkäämme järkeämme, miehet, ettei synny enempää
verenvuodatusta.
Johan se riittää, että minun lankoni on miehentappaja —."

Simon astui Erlendin rinnalle.

"Turhan tähden sinä tapoit sisareni pojan, Simon Andreksenpoika",


sanoi
Vidar, Klaufastadin herra, joka seisoi ensimmäisenä oviaukossa.

"Eipä niin aivan turhankaan tähden. Mutta minä en karkaa, sen


sinä tiedät, Vidar — enkä jätä maksamatta sakkorahoja. Tiedätte
jokainen mistä minut löydätte."

Erlend puhui vielä hiukan miesten kanssa: "Miten Alfin kävi?" hän
kysyi ja seurasi miehiä sisään.
Simon jäi seisomaan paikalleen merkillisen saamattomana. Erlend
ilmestyi ulos hetken kuluttua: "Ja nyt hevosen selkään", sanoi hän
astuen edelleen tallia kohden.

"Onko hän kuollut?" kysyi Simon.

"On. Ja Alf ja Toralde ja Vidar ovat kaikki haavoittuneet — mutta


eivät kovin pahasti luullakseni. Holmgeirin hiukset ovat palaneet
takaa." Erlend oli puhunut hyvin vakavasti — mutta nyt hän
purskahti yhtäkkiä nauruun: "Kyllä nyt vajassa haisee paistetulta
räkärastaalta! Hitto vieköön — miten te saatoitte joutua
tuommoiseen riitaan niin lyhyessä ajassa?" kysyi hän ällistyksissään.

Puolikasvuinen poika piteli heidän hevosiaan — langoksilla ei ollut


kummallakaan mukanaan saattomiehiä.

Molemmat seisoivat vielä miekka kädessä. Erlend otti lumesta


heinätukon ja kuivasi sillä veren omastaan. Simon teki samoin. —
Kun hän oli saanut pyyhityksi pois enimmän veren, hän työnsi
miekan takaisin huotraan. Erlend puhdisti omansa hyvin huolellisesti
ja hieroi sen lopulta hyvin kiiltäväksi mekkonsa helmalla. Sitten hän
teki sillä pari pientä leikittelevää hyökkäystä ilmassa — hymyili
samalla kuin jotakin muistellen — viskasi sen korkealle ilmaan ja
tavoitti sen kiinni kahvasta; sitten hän työnsi sen tuppeen.

"Entäs sinun haavasi — mennään takaisin tupaan niin minä sidon


ne siellä —." Mutta Simon sanoi, ettei niistä kannattanut puhua.

"Olethan sinäkin veressä, Erlend!"

"Se ei tee mitään! Minun nahkani on hyvä paranemaan. Minä olen


huomannut, että lihavien haavat ovat aina hitaammat menemään
umpeen. Ja nyt on lisäksi tämmöinen pakkanenkin — ja meillä on
pitkä matka edessä."

Erlend sai talon isännältä voidetta ja riepuja ja sitoi huolellisesti


toisen haavat — Simonilla oli kaksi lihashaavaa aivan toistensa
vieressä vasemmalla puolen rintaa, niistä vuoti ensin paljon verta,
mutta vaarallisia ne eivät olleet. Erlend oli saanut naarmun reiteensä
Bjørnin keihäästä — se mahtoi olla paha ratsastaessa, tuumi Simon;
mutta lanko vain nauroi: tuskinhan koko isku oli mennyt
nahkahousujen läpi. Hän tuhri siihen vähän voidetta ja pani sen
päälle kääreitä yökylmää vastaan.

Oli räiskyvä pakkanen. Ennen kuin he olivat ehtineet töyryn alle,


jolla kartano oli, olivat hevoset kuurassa ja miesten vaippojen
nahkareunus valkoinen.

"Huu-uu!" Erlendiä värisytti. "Kunpa olisimme jo kotona. Meidän


täytyy ratsastaa tuohon kartanoon ja ilmoittaa taposta."

"Onko se välttämätöntä?" kysyi Simon, "Sanoinhan minä Vidarille,


ja he —"

"On yhtä hyvä, jos sen teet itse", sanoi Erlend. "Ilmoita asian
täällä, ettei heille jää mitään muistuttamista."

Aurinko oli jo harjun takana, ilta oli harmaansävyinen, mutta ei


ollut vielä pimeä. He ratsastivat puron reunaa, läpi koivulehdon, joka
oli vielä pörhöisempi kuurasta kuin muu metsä, ilmassa oli niin raaka
kylmän usva täällä alempana laaksossa, että aivan henkeä salpasi.
Erlend valitti kärsimättömästi pitkiä pakkasia ja kylmyyttä, jossa
heidän nyt täytyi ratsastaa kotiin.
"Ethän sinä vain ole palelluttanut kasvojasi, lanko?" hän kurkisti
huolestuneesti Simonin hupun sisään. Simon hieroi kasvojaan — ei
hän ollut palelluttanut niitä, mutta hiukan kalpea hän oli istuessaan
ratsunsa selässä. Se ei kaunistanut häntä, sillä hänen isot, lihavahkot
kasvonsa olivat hyvin ahavoituneet ja punertavat, ja kalpeus levisi
harmaina läiskinä pitkin ihoa, tehden sen ikään kuin likaisen
väriseksi.

"Oletko nähnyt ennen miehen luovan lantaa miekalla", sanoi


Erlend — hän purskahti nauruun, kurottautui etukumaraan satulassa
ja matki Alfin liikkeitä. "Näin Alf tekee — on siinäkin lääninvouti!
Sinun olisi pitänyt nähdä Ulfin leikkivän miekalla, Simon — Herra
varjele!"

Leikkivän — nyt hän oli nähnyt Erlend Nikulauksenpojan siinä


leikissä. Yhä uudelleen ja uudelleen hän näki itsensä ja toiset miehet
miekkasilla lieden luona; se oli käynyt niin nopeaan kuin puiden
hakkuu ja heinän viskaus talonpojalta — hän näki Erlendin
joustavan, nuolena suihkavan hahmon toisten keskellä, hänen tarkan
katseensa, varman kätensä, hänen hyppynsä ja väistönsä puoleen ja
toiseen, hänen nopsan ja harjaantuneen ruumiinsa liikkeet.

Siitä oli enemmän kuin kaksikymmentä vuotta, kun hän itse oli
kuulunut parhaisiin aseenkäyttäjiin henkivartion nuorten miesten
joukossa näiden harjoitellessa leikkikentällä. Mutta sen jälkeen
hänellä ei ollut ollut tilaisuutta käyttää ritaritaitoaan.

Ja tässä hän nyt ratsasti tunnonvaivoissa, kun oli tullut


tappaneeksi miehen — hän näki yhä edessään Holmgeirin ruumiin,
joka oli irtaantunut hänen miekastaan ja kaatunut tuleen, kuuli
korvissaan hänen lyhyen korisevan kuolonhuutonsa ja muisteli yhä
uudelleen lyhyen, tuiman ottelun menoa, joka oli seurannut sen
jälkeen. Hän tunsi mielensä apeaksi, masentuneeksi ja
hämmentyneeksi — he olivat hyökänneet hänen niskaansa yhdellä
haavaa, kaikki nuo miehet, juuri kun hän oli tuntenut kuuluvansa
heidän joukkoonsa — ja sitten oli Erlend suojannut häntä.

Pelkuriksi hän ei ollut koskaan uskonut itseään. Hän oli pyytänyt


kuusi karhua näinä vuosina, jolloin hän oli asunut Formossa — ja
kaksi kertaa hän oli ollut hiuskarvan varassa. Vain ohut puunrunko
itsensä ja raivoisan, haavoittuneen naaraskarhun välissä, vailla muita
aseita kuin keihäänkärki ja kämmenenlevyinen varrenpätkä — niin
hän oli otellut, eikä leikin herättämä jännitys ollut häirinnyt hänen
ajatustensa, liikkeittensä ja aistiensa varmuutta. Mutta nyt tuolla
vajassa ei hän tiennyt, oliko se ollut pelkoa — hän oli ollut
hämmentynyt, ei ollut osannut käyttää ajatustaan —.

Istuessaan kotonaan karhunpyynnin jälkeen, vaatteet riepuina,


käsi kääreessä, kuumeisena, ruhjoutuneena, olkapää revittynä hän
oli tuntenut ainoastaan ylpeää iloa — pahemminkin olisi saattanut
käydä — miten, sitä hän ei ajatellut. Mutta nyt hänen täytyi ajatella
lakkaamatta, miten hänen olisi käynyt, ellei Erlend olisi tullut avuksi
juuri sillä hetkellä. Hän oli — ei se ollut suinkaan pelkoa — mutta
hänestä oli tuntunut niin oudolta nähdä toisten miesten ilmeet — ja
Holmgeirin kuoleva ruumis —.

Hän ei ollut tätä ennen tappanut ketään.

Paitsi tuon ruotsalaisen ratsastajan, jonka hän oli lyönyt maahan.


Se tapahtui sinä vuonna, jolloin kuningas Haakon lähti
sotajoukkoineen Ruotsiin kostamaan herttuoiden murhaa. Hänet oli
lähetetty tiedusteluretkelle — hän oli saanut mukaansa kolme
miestä, joiden päällikkö hän oli —. hän oli siitä kauhean itsetietoinen
ja ollakseen. Simon muisti, miten hänen miekkansa oli tarttunut
ratsastajan rautalakkiin, niin että hänen täytyi tempoa ja vääntää se
irti; tarkastaessaan sitä aamulla hän huomasi, että terään oli tullut
sälö. Hän ei ollut milloinkaan muistellut tuota tapausta muuten kuin
mielihyvin — heitä vastassa oli ollut kahdeksan ruotsalaista, —
ainakin hän oli päässyt taistelun makuun; sellaista ei sattunut joka
miehen osalle, joka palveli sinä vuonna henkivartiossa. Kun tuli
valoisaa, hän näki panssaripaidalleen räiskyneen verta ja aivoainetta
— hän oli koettanut olla vaatimattoman näköinen pestessään sitä
puhtaaksi.

Mutta tuon ratsastajaraukan muistelemisesta ei nyt ollut mitään


hyötyä. Ei, se ei ollut sama asia. Hän ei päässyt vapaaksi
ahdistavasta rauhattomuuden tunteesta ajatellessaan Holmgeir
Moiseksenpoikaa.

Ja sitten hän sai kiittää Erlendiä hengestään. Hän ei vielä tiennyt


mitä siihen sisältyi. Mutta hänestä tuntui, että kaiken täytyi muuttua,
kun hän ja Erlend olivat kuitit.

— Siinä suhteessa he nyt olivat tasassa.

Langokset olivat ratsastaneet melkein vaiti. Kerran virkahti Erlend:

"Olit sinä aika hupsu, Simon, kun et ensiksi ajatellut pyrkiä ulos
ovesta —"

"Kuinka niin?" kysyi Simon lyhyeen. "Siksikö, että sinä olit ulkona
—?"

"Ei —" Erlendiä nauratti. "Ja vaikka siksikin — en nyt ajatellut sitä.
Mutta tuosta ahtaasta ovesta he eivät olisi päässeet tulemaan kuin
yksi kerrallaan sinua vastaan. Ja toiseksi on sula ihme nähdä, miten
pian miehet saavat takaisin järkensä joutuessaan paljaan taivaan
alle. Minusta on ilmoinen ihme, ettei tapahtunut enempää
hengenhukkaa."

Hän kysyi pariin kertaa Simonin haavoja. Toinen vastasi, etteivät


ne vaivanneet häntä sanottavasti — vaikka niitä kirveli aika lailla.

He saapuivat Formoon illalla, ja Erlend seurasi lankoaan sisään.


Hän oli neuvonut tätä lähettämään lääninherralle kirjelmän
tapauksen menosta jo huomispäivänä, jotta asiat saataisiin kuntoon
mitä pikimmin. Erlend tarjoutui laatimaan Simonille kirjeen vielä
samana iltana — rinnassa olevien haavain vuoksi oli kai Simonin
vaikea käyttää kättään: "ja huomenna sinun pitää pysyä kauniisti
sängyn pohjalla, sillä kyllä siitä nousee pieni haavakuume —"

Ramborg ja Arngjerd istuivat odottamassa. Kylmän tähden he


olivat kömpineet uuninvieruspenkille ja vetäneet jalat alleen — heillä
oli keskellään pelilauta ja he näyttivät aivan lapsilta.

Simon ei ollut ehtinyt sanoa montakaan sanaa nuoren vaimon


lennähtäessä hänen luokseen ja kietoessa kätensä hänen kaulaansa.
Hän veti Simonin kasvot alas ja painoi poskensa tämän poskeen — ja
puristi Erlendin käsiä niin lujaa, että tämä sanoi nauraen, ettei hän
ollut tiennyt Ramborgilla olevan niin hyvät käsivoimat.

Ramborg vaati välttämättä miestään makaamaan yön tuvassa,


jotta hän itse saisi valvoa hänen luonaan. Hän pyysi ja rukoili itku
kurkussa — silloin Erlend tarjoutui jäämään taloon ja makaamaan
Simonin kanssa, jos Ramborg lähettäisi sananviejän Jørundgaardiin
— oli aika myöhä ratsastaa kotiin: "ja on sääli Kristiinaa, joka istuu
odottamassa tässä kylmässä — hänkin odottaa minua aina itse;
hyvät vaimot te olette, te molemmat Lauritsantyttäret —"
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like