Slide 1

Slide 1 text

Francesco Tisiot - Developer Advocate @ftisiot Kickstart your Apache Kafka with Faker Data

Slide 2

Slide 2 text

@ftisiot | @aiven_io Kafka is Up!

Slide 3

Slide 3 text

@ftisiot | @aiven_io What Now?

Slide 4

Slide 4 text

@ftisiot | @aiven_io

Slide 5

Slide 5 text

@ftisiot | @aiven_io Choose Your Hero

Slide 6

Slide 6 text

@ftisiot | @aiven_io Kafka Python from kafka import KafkaProducer producer = KafkaProducer( bootstrap_servers= ['broker1:1234'] ) producer.send( 'my-topic', b'raw_bytes' ) producer.flush()

Slide 7

Slide 7 text

@ftisiot | @aiven_io Faker 🦀$ pip install Faker 1. Install from faker import Faker fake = Faker() 2. Use fake.name() # 'Lucy Cechtelar' fake.address() # '426 Jordy Lodge # Cartwrightshire, SC 88120-6700'

Slide 8

Slide 8 text

@ftisiot | @aiven_io Faker fake = Faker('it_IT') #default is en_EN fake.name() #Sig. Severino Zaccagnini fake.address() #Incrocio Milanesi 58 #Livio sardo, 33587 Palermo (BZ) 3. Localize fake.unique.name() 4. Uniqueness & Repeatable Results Faker.seed(4321)

Slide 9

Slide 9 text

@ftisiot | @aiven_io Providers https:/ /faker.readthedocs.io/en/master/providers.html Automotive Bank Geo Python Pizza?

Slide 10

Slide 10 text

@ftisiot | @aiven_io from faker.providers import BaseProvider valid_pizza_names = [ 'Margherita', 'Marinara', 'Diavola', 'Mari & Monti', 'Salami' ] class PizzaProvider(BaseProvider): def pizza_name(self): return random.choice(valid_pizza_names) 5. Extend

Slide 11

Slide 11 text

@ftisiot | @aiven_io fake.add_provider(PizzaProvider) 6. Create message = { 'id': 0, 'shop': fake.shop_name(), 'name': fake.unique.name(), 'phoneNumber': fake.unique.phone_number(), 'address': fake.address(), 'pizzas': pizzas } pizzas = [] for pizza in range(5): pizzas.append(fake.pizza_name())

Slide 12

Slide 12 text

@ftisiot | @aiven_io { "id": 0, "shop": "Luigis Pizza", "name": "Arsenio Pisaroni-Boccaccio", "phoneNumber": "+39 51 0290746", "address": "Viale Donatoni 01\nBianca terme, 85639 Novara (CZ)", "pizzas": [ {"pizzaName": “Diavola", "additionalToppings": [“ham"] }, {"pizzaName": "Diavola", "additionalToppings": ["mozzarella","banana","onion"] }, ] 7. Output

Slide 13

Slide 13 text

@ftisiot | @aiven_io References https:/ /github.com/joke2k/faker https:/ /aiven.io go.aiven.io/pizza_producer_repo go.aiven.io/pizza_producer_blog