Ayush Tiwari has an introductory tutorial on using Spark Streaming on top of Kafka:
The Spark Streaming integration for Kafka 0.10 is similar in design to the 0.8 Direct Stream approach. It provides simple parallelism, 1:1 correspondence between Kafka partitions and Spark partitions, and access to offsets and metadata. However, because the newer integration uses the new Kafka consumer API instead of the simple API, there are notable differences in usage. This version of the integration is marked as experimental, so the API is potentially subject to change.
In this blog, I am going to implement the basic example on Spark Structured Streaming & Kafka Integration.
This is a code-heavy tutorial, so check it out.