Roy Kid
12/09/2024, 10:00 AMfrom hamilton.htypes import Parallelizable, Collect
def stage1(urls: list[str])-> Parallelizable[str]:
for url in urls:
yield url
def substage1(stage1: str) -> str:
return stage1.upper()
def reduce_stage1(substage1: Collect[str]) -> list[str]:
return list(substage1)
def stage2(users: list[str]) -> Parallelizable[str]:
for user in users:
print("user: ", user)
yield user
def substage2(stage2: str, reduce_stage1: list[str]) -> str:
print("stage2: ", stage2)
print("reduce_stage1: ", reduce_stage1)
return stage2
def reduce_stage2(substage2: Collect[str]) -> list[str]:
return list(substage2)
I'm not sure about the error, because when I rerun it I get a KeyError: 'Key reduce_stage2 not found in cache' (first run gets wrong reduce_stage1 result). I mean to use reduce_stage1 result in substage2 . Is this kind of nested block?
BTW: is there hamilton discord?Roy Kid
12/09/2024, 10:03 AMfrom hamilton.htypes import Parallelizable, Collect
def stage1(urls: list[str])-> Parallelizable[str]:
for url in urls:
yield url
def substage1(stage1: str) -> str:
return stage1.upper()
def reduce_stage1(substage1: Collect[str]) -> list[str]:
return list(substage1)
def tmp(reduce_stage1: list[str]) -> list[str]:
return reduce_stage1 # ['A', 'B', 'C']
def stage2(users: list[str]) -> Parallelizable[str]:
for user in users:
print("user: ", user)
yield user
def substage2(stage2: str, tmp: list[str]) -> str:
print("stage2: ", stage2) # d, e, f
print("reduce_stage1: ", tmp) # ['A', 'B', 'C']
return stage2
def reduce_stage2(substage2: Collect[str]) -> list[str]:
return list(substage2)
The output is :
user: d
user: e
user: f
stage2: ['d', 'e', 'f']
reduce_stage1: ['A']
stage2: ['d', 'e', 'f']
reduce_stage1: ['B']
stage2: ['d', 'e', 'f']
reduce_stage1: ['C']
{'reduce_stage2': [['d', 'e', 'f'], ['d', 'e', 'f'], ['d', 'e', 'f']]}
I have no clue...Roy Kid
12/09/2024, 10:04 AMfrom hamilton.htypes import Parallelizable, Collect
def stage1(urls: list[str])-> Parallelizable[str]:
for url in urls:
yield url
def substage1(stage1: str) -> str:
return stage1.upper()
def reduce_stage1(substage1: Collect[str]) -> list[str]:
return list(substage1)
def tmp(reduce_stage1: list[str]) -> list[str]:
return reduce_stage1 # ['A', 'B', 'C']
def stage2(users: list[str], tmp: list[str]) -> Parallelizable[tuple[str, list]]:
for user in users:
print("user: ", user)
yield user, tmp
def substage2(stage2: tuple[str, list]) -> str:
print("stage2: ", stage2[0]) # d, e, f
print("reduce_stage1: ", stage2[1]) # ['A', 'B', 'C']
return stage2
def reduce_stage2(substage2: Collect[str]) -> list[str]:
return list(substage2)Elijah Ben Izzy
12/09/2024, 3:31 PMRoy Kid
12/10/2024, 8:41 AMElijah Ben Izzy
12/10/2024, 6:41 PMRoy Kid
12/10/2024, 6:57 PMElijah Ben Izzy
12/10/2024, 7:00 PMsf-hamilton==1.84.0Elijah Ben Izzy
12/10/2024, 7:00 PMElijah Ben Izzy
12/10/2024, 7:00 PMRoy Kid
12/10/2024, 7:04 PMElijah Ben Izzy
12/10/2024, 7:05 PMRoy Kid
12/10/2024, 7:09 PMRoy Kid
12/10/2024, 7:09 PMRoy Kid
12/10/2024, 7:09 PMElijah Ben Izzy
12/10/2024, 7:10 PMRoy Kid
12/10/2024, 7:12 PMRoy Kid
12/10/2024, 7:17 PMElijah Ben Izzy
12/10/2024, 7:17 PMRoy Kid
12/10/2024, 7:17 PM