Partitions are created depending on the end table or requirements for data and in what form data is produced at source.
Partitions are created when data is inserted into table and how it is partitioned depends on how you load it. Static partitions are preferred when loading big data in Hive table and it saves your time in loading data compared to dynamic partition.
In static partitioning, we need to specify the partition column value in each and every LOAD statement.
Dynamic partition is useful when you load a huge file into a Table X and then you run an insert query into a Table Y. In case of dynamic partition, every row of the data is read and data is partitioned through an MapReduce job.