anchor.diff:  val wo = new KuduWriteOptions
   wo.ignoreNull = true
   kuduContext.upsertRows(nullDF, simpleTableName, wo)
  -dataDF.show()
  +dataFrame.show()
   // The val field stays unchanged
   +---+---+
   |key|val|
  
positive.code: df.select("id").filter("id >= 5").show()
  
  // ...or register a temporary table and use SQL
  df.registerTempTable("kudu_table")
  val filteredDF = spark.sql("select id from kudu_table where id >= 5").show()
  
  // Use KuduContext to create, delete, or write to Kudu tables
  val kuduContext = new KuduContext("kudu.master:7051", spark.sparkContext)
  
  // Create a new Kudu table from a dataframe schema
  // NB: No rows from the dataframe are inserted into the table
  kuduContext.createTable(
      "test_table", df.schema, Seq("key"),
      new CreateTableOptions()
  
negative.code: 
  === Upsert option in Kudu Spark
  The upsert operation in kudu-spark supports an extra write option of `ignoreNull`. If set to true,
  it will avoid setting existing column values in Kudu table to Null if the corresponding DataFrame
  column values are Null. If unspecified, `ignoreNull` is false by default.
  [source,scala]
  ----
  val dataFrame = spark.read
    .options(Map("kudu.master" -> "kudu.master:7051", "kudu.table" -> simpleTableName))
    .format("kudu").load
  dataFrame.createOrReplaceTempView(simpleTableName)
  dataFrame.show()
  // Below is the original data in the table 'simpleTableName'
  +---+---+
  |key|val|
  