You are right to start discipline at this age. Spanking is not for punishment, but a swat to the rear gets the childs attention, then give the punishment. Best punishment for any child, any age is separation from rest of the family and friends. My youngest was very much the same at that age.
When he acts up, don't try to give him things that he likes; he needs punishment. If you have to leave the room or the building, do so. It will only take a few times and he will learn that he is not going to get away with this. You can even do "practice" runs. Take him where you know he acts up, tell him if he does you will take him home immediately and put him in his bed. I know this is a little difficult when you are at dance class with another child. Maybe you could arrange with a sitter, a friend, relative, to be there with you to dance class and if he acts up, you can take him home and let the other person bring your daughter home afterward.
If he acts up in stores (mine did a lot), go when you don't really need much of anything. When he acts up, leave immediately.
When you get home with him, put him in his bed or playpen, 5-10 minutes at first, longer as he keeps acting up. If you are consistent, he will learn.
My son started acting up in church about age 4. I finally had it, and after church put him in his room for an hour. The next week, he acted up again, I put him in his room for 2 hours. He did not act up in church again after that.