title: pyspark partitioning data using partitionby
body: <p>I understand that <code>partitionBy</code> function partitions my data. If I use <code>rdd.partitionBy(100)</code> it will partition my data by key into 100 parts. i.e. data associated with similar keys will be grouped together</p>
  
  <ol>
  <li>Is my understanding correct?</li>
  <li>Is it advisable to have number of partitions equal to number of
      available cores? Does that make processing more efficient?</li>
  <li>what if my data is not in key,value format. Can i still use this function?</li>
  <li>lets say my data is serial_number_of_student,student_name. In this
          case can i partition my data by student_name instead of the
          serial_number?</li>
  </ol>