from pyspark.sql import SparkSession
import random

spark = SparkSession.builder.appName("PiEstimation").getOrCreate()
sc = spark.sparkContext

NUM_SAMPLES = 1_000_000

def inside(p):
    x, y = random.random(), random.random()
    return x*x + y*y < 1.0

count = sc.parallelize(range(NUM_SAMPLES)).filter(inside).count()
pi = 4.0 * count / NUM_SAMPLES

print(f"\n*** Pi is roughly {pi} ***\n")

spark.stop()
