Skip to content

Instantly share code, notes, and snippets.

@mhvelplund
Created July 2, 2024 10:14
Show Gist options
  • Save mhvelplund/961c8868fbfdf857dcd0a623a353870b to your computer and use it in GitHub Desktop.
Save mhvelplund/961c8868fbfdf857dcd0a623a353870b to your computer and use it in GitHub Desktop.
AWS Glue job that tests different logging types.
import sys
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
args = getResolvedOptions(sys.argv, ["JOB_NAME", "TYPE", "DELAY"])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args["JOB_NAME"], args)
# Setup
log_type = args["TYPE"]
if log_type == "log":
import logging
logging.basicConfig(
format="%(asctime)s,%(msecs)d %(levelname)s [%(filename)s:%(lineno)d#%(funcName)s] %(message)s",
datefmt="%Y-%m-%d:%H:%M:%S",
level=logging.INFO,
)
logger = logging.getLogger(__name__)
output = logger.info
elif log_type == "glue":
logger = glueContext.get_logger()
output = logger.info
else:
output = print
delay_msecs = int(args["DELAY"])
if delay_msecs > 0:
import time
from functools import wraps
def delay(f):
@wraps(f)
def wrapper(*args, **kwargs):
time.sleep(delay_msecs / 1000)
return f(*args, **kwargs)
return wrapper
output = delay(output)
output(f"type: {log_type}\tdelay: {delay_msecs} ms")
# Execution
output("87 bytes. Fusce nulla metus, consectetur eget tortor in, rhoncus congue nunc. Fusce ut.")
output("103 bytes. Proin convallis urna id dui congue elementum. Fusce condimentum orci nulla, et viverra orci.")
output(
"3014 bytes. Curabitur eu imperdiet dolor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam eget pellentesque sapien. Nulla dapibus pulvinar quam. Nam sodales ultrices tempor. Nunc maximus nibh et aliquam vehicula. Proin sit amet pharetra dui. Duis eu dictum ante. Integer vitae mauris nec nisi lacinia pellentesque et vel quam. Donec tempor eros non malesuada molestie. Curabitur mollis dui eu pretium venenatis. Vivamus cursus lacus orci, eget tincidunt nunc pharetra eu. Duis semper augue ut lobortis lobortis. Pellentesque mollis placerat nisi, vitae vehicula libero ultrices sit amet.\n\nMauris at tortor vel dui dignissim rhoncus sit amet a mauris. Pellentesque ac mauris sapien. Vestibulum tincidunt augue quis arcu sollicitudin, sed finibus metus porttitor. Praesent hendrerit nisl ut mauris condimentum, vitae consequat turpis congue. Ut pulvinar faucibus mauris, vitae maximus tortor aliquet ut. Donec mi enim, commodo eu nulla finibus, pretium viverra massa. Mauris pellentesque vel risus ut hendrerit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus vel justo lorem. Nullam commodo augue vel euismod porttitor. Vestibulum nulla sem, venenatis vitae sapien a, blandit luctus mi.\n\nQuisque turpis enim, pretium at porttitor vestibulum, euismod a nibh. Morbi ultrices pellentesque accumsan. Nunc malesuada, libero eget efficitur sagittis, enim velit gravida diam, quis blandit lorem nulla ut elit. Donec nulla justo, tincidunt ultrices dapibus a, maximus et est. Cras sed fermentum nisi, vel consectetur turpis. Proin ac dignissim ipsum. Nunc accumsan suscipit tincidunt. Cras molestie lectus id sollicitudin rhoncus. Fusce metus ligula, maximus eu justo vel, fringilla facilisis odio.\n\nMauris faucibus quam eu sodales tincidunt. Sed scelerisque sit amet nisi id feugiat. Phasellus pretium erat quis dolor scelerisque, ac volutpat turpis lacinia. Sed ultricies dictum purus vel rhoncus. Integer ut nulla nec arcu placerat placerat. Curabitur lacinia finibus erat, vel auctor nisi commodo in. Mauris quam orci, tristique sed nisi non, pellentesque ultrices orci. Mauris tincidunt vulputate dolor. Cras maximus pharetra odio, ac lobortis neque posuere sed.\n\nEtiam sagittis augue vitae felis hendrerit, id congue justo egestas. Curabitur a vehicula dolor. Vivamus id finibus justo. Donec nec mollis arcu. Sed tristique volutpat lorem, at rhoncus dui sagittis sit amet. Fusce tincidunt mi eget sapien suscipit, vel sodales mi maximus. Integer non felis lectus. Pellentesque vitae luctus tellus, fermentum scelerisque massa. Maecenas est leo, sagittis vel ipsum quis, sodales vehicula felis. Aliquam euismod, massa vel cursus ultricies, augue erat tristique leo, ac posuere nunc leo ut felis. Curabitur consequat interdum ipsum. Ut quam lectus, accumsan vel arcu a, commodo convallis augue.\n\nPellentesque quis scelerisque leo. Integer leo erat, commodo a ultricies eu, volutpat dictum sapien. Quisque quis fermentum orci. Nullam biam."
)
output(
"402 bytes. Nulla pharetra id lorem et convallis. Nulla efficitur arcu massa. Fusce vitae euismod nibh. In et lacinia ante. Curabitur quis massa sit amet lacus commodo volutpat. Duis euismod in ex eget blandit. Nullam urna ante, bibendum et rutrum tincidunt, pulvinar nec tellus. In eget mauris arcu. Nullam aliquet placerat mollis. Vestibulum justo nunc, consectetur sed diam id, vehicula ultrices vel."
)
@mhvelplund
Copy link
Author

This Gist is related to an issue posted on Stack Overflow about corrupted logs from AWS Glue jobs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment