{"push_id":899074874,"size":23,"distinct_size":23,"ref":"refs/heads/csd-1.6","head":"508e915de8f5490df2264f1f8ba2d7382caed72d","before":"7fb05f97328a38fe0a72280c209472e8573fe94d","commits":[{"sha":"05e441e121a86e0c105ad25010e4678f2f9e73e3","author":{"email":"e5dd8a3899598b2e85930c5ff06b11c053ef654f@databricks.com","name":"Josh Rosen"},"message":"[SPARK-12165][SPARK-12189] Fix bugs in eviction of storage memory by execution\n\nThis patch fixes a bug in the eviction of storage memory by execution.\n\n## The bug:\n\nIn general, execution should be able to evict storage memory when the total storage memory usage is greater than `maxMemory * spark.memory.storageFraction`. Due to a bug, however, Spark might wind up evicting no storage memory in certain cases where the storage memory usage was between `maxMemory * spark.memory.storageFraction` and `maxMemory`. For example, here is a regression test which illustrates the bug:\n\n```scala\n    val maxMemory = 1000L\n    val taskAttemptId = 0L\n    val (mm, ms) = makeThings(maxMemory)\n    // Since we used the default storage fraction (0.5), we should be able to allocate 500 bytes\n    // of storage memory which are immune to eviction by execution memory pressure.\n\n    // Acquire enough storage memory to exceed the storage region size\n    assert(mm.acquireStorageMemory(dummyBlock, 750L, evictedBlocks))\n    assertEvictBlocksToFreeSpaceNotCalled(ms)\n    assert(mm.executionMemoryUsed === 0L)\n    assert(mm.storageMemoryUsed === 750L)\n\n    // At this point, storage is using 250 more bytes of memory than it is guaranteed, so execution\n    // should be able to reclaim up to 250 bytes of storage memory.\n    // Therefore, execution should now be able to require up to 500 bytes of memory:\n    assert(mm.acquireExecutionMemory(500L, taskAttemptId, MemoryMode.ON_HEAP) === 500L) // <--- fails by only returning 250L\n    assert(mm.storageMemoryUsed === 500L)\n    assert(mm.executionMemoryUsed === 500L)\n    assertEvictBlocksToFreeSpaceCalled(ms, 250L)\n```\n\nThe problem relates to the control flow / interaction between `StorageMemoryPool.shrinkPoolToReclaimSpace()` and `MemoryStore.ensureFreeSpace()`. While trying to allocate the 500 bytes of execution memory, the `UnifiedMemoryManager` discovers that it will need to reclaim 250 bytes of memory from storage, so it calls `StorageMemoryPool.shrinkPoolToReclaimSpace(250L)`. This method, in turn, calls `MemoryStore.ensureFreeSpace(250L)`. However, `ensureFreeSpace()` first checks whether the requested space is less than `maxStorageMemory - storageMemoryUsed`, which will be true if there is any free execution memory because it turns out that `MemoryStore.maxStorageMemory = (maxMemory - onHeapExecutionMemoryPool.memoryUsed)` when the `UnifiedMemoryManager` is used.\n\nThe control flow here is somewhat confusing (it grew to be messy / confusing over time / as a result of the merging / refactoring of several components). In the pre-Spark 1.6 code, `ensureFreeSpace` was called directly by the `MemoryStore` itself, whereas in 1.6 it's involved in a confusing control flow where `MemoryStore` calls `MemoryManager.acquireStorageMemory`, which then calls back into `MemoryStore.ensureFreeSpace`, which, in turn, calls `MemoryManager.freeStorageMemory`.\n\n## The solution:\n\nThe solution implemented in this patch is to remove the confusing circular control flow between `MemoryManager` and `MemoryStore`, making the storage memory acquisition process much more linear / straightforward. The key changes:\n\n- Remove a layer of inheritance which made the memory manager code harder to understand (53841174760a24a0df3eb1562af1f33dbe340eb9).\n- Move some bounds checks earlier in the call chain (13ba7ada77f87ef1ec362aec35c89a924e6987cb).\n- Refactor `ensureFreeSpace()` so that the part which evicts blocks can be called independently from the part which checks whether there is enough free space to avoid eviction (7c68ca09cb1b12f157400866983f753ac863380e).\n- Realize that this lets us remove a layer of overloads from `ensureFreeSpace` (eec4f6c87423d5e482b710e098486b3bbc4daf06).\n- Realize that `ensureFreeSpace()` can simply be replaced with an `evictBlocksToFreeSpace()` method which is called [after we've already figured out](https://github.com/apache/spark/blob/2dc842aea82c8895125d46a00aa43dfb0d121de9/core/src/main/scala/org/apache/spark/memory/StorageMemoryPool.scala#L88) how much memory needs to be reclaimed via eviction; (2dc842aea82c8895125d46a00aa43dfb0d121de9).\n\nAlong the way, I fixed some problems with the mocks in `MemoryManagerSuite`: the old mocks would [unconditionally](https://github.com/apache/spark/blob/80a824d36eec9d9a9f092ee1741453851218ec73/core/src/test/scala/org/apache/spark/memory/MemoryManagerSuite.scala#L84) report that a block had been evicted even if there was enough space in the storage pool such that eviction would be avoided.\n\nI also fixed a problem where `StorageMemoryPool._memoryUsed` might become negative due to freed memory being double-counted when excution evicts storage. The problem was that `StorageMemoryPoolshrinkPoolToFreeSpace` would [decrement `_memoryUsed`](https://github.com/apache/spark/commit/7c68ca09cb1b12f157400866983f753ac863380e#diff-935c68a9803be144ed7bafdd2f756a0fL133) even though `StorageMemoryPool.freeMemory` had already decremented it as each evicted block was freed. See SPARK-12189 for details.\n\nAuthor: Josh Rosen <joshrosen@databricks.com>\nAuthor: Andrew Or <andrew@databricks.com>\n\nCloses #10170 from JoshRosen/SPARK-12165.\n\n(cherry picked from commit aec5ea000ebb8921f42f006b694ef26f5df67d83)\nSigned-off-by: Andrew Or <andrew@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/05e441e121a86e0c105ad25010e4678f2f9e73e3"},{"sha":"ee0a6e72234e4f672a2939b794c904026f696398","author":{"email":"291c18f3fb7528c712d9098b0e50a515ea0b91d5@cloudera.com","name":"Sean Owen"},"message":"[SPARK-11824][WEBUI] WebUI does not render descriptions with 'bad' HTML, throws console error\n\nDon't warn when description isn't valid HTML since it may properly be like \"SELECT ... where foo <= 1\"\n\nThe tests for this code indicate that it's normal to handle strings like this that don't contain HTML as a string rather than markup. Hence logging every such instance as a warning is too noisy since it's not a problem. this is an issue for stages whose name contain SQL like the above\n\nCC tdas as author of this bit of code\n\nAuthor: Sean Owen <sowen@cloudera.com>\n\nCloses #10159 from srowen/SPARK-11824.\n\n(cherry picked from commit 1eb7c22ce72a1b82ed194a51bbcf0da9c771605a)\nSigned-off-by: Sean Owen <sowen@cloudera.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/ee0a6e72234e4f672a2939b794c904026f696398"},{"sha":"bfb4201395c6a1905c6eb46de4ea3eefe8d17309","author":{"email":"7853928d03425cf3be35be2fa0c5b99641435d26@gmail.com","name":"Xusen Yin"},"message":"[SPARK-11551][DOC] Replace example code in ml-features.md using include_example\n\nPR on behalf of somideshmukh, thanks!\n\nAuthor: Xusen Yin <yinxusen@gmail.com>\nAuthor: somideshmukh <somilde@us.ibm.com>\n\nCloses #10219 from yinxusen/SPARK-11551.\n\n(cherry picked from commit 051c6a066f7b5fcc7472412144c15b50a5319bd5)\nSigned-off-by: Xiangrui Meng <meng@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/bfb4201395c6a1905c6eb46de4ea3eefe8d17309"},{"sha":"9bc6a27fdc5db3815958c721737a195af93f3757","author":{"email":"810f4eaecb829dde5e3d87bd39ae52346de8f0c9@gmail.com","name":"Andrew Ray"},"message":"[SPARK-12211][DOC][GRAPHX] Fix version number in graphx doc for migration from 1.1\n\nMigration from 1.1 section added to the GraphX doc in 1.2.0 (see https://spark.apache.org/docs/1.2.0/graphx-programming-guide.html#migrating-from-spark-11) uses \\{{site.SPARK_VERSION}} as the version where changes were introduced, it should be just 1.2.\n\nAuthor: Andrew Ray <ray.andrew@gmail.com>\n\nCloses #10206 from aray/graphx-doc-1.1-migration.\n\n(cherry picked from commit 7a8e587dc04c2fabc875d1754eae7f85b4fba6ba)\nSigned-off-by: Joseph K. Bradley <joseph@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/9bc6a27fdc5db3815958c721737a195af93f3757"},{"sha":"d86a88da677041d3c4ab484ed6f4f152674091f0","author":{"email":"02e0a999c50b1f88df7a8f5a04e1b76b35ea6a88@databricks.com","name":"Andrew Or"},"message":"[SPARK-12165][ADDENDUM] Fix outdated comments on unroll test\n\nJoshRosen\n\nAuthor: Andrew Or <andrew@databricks.com>\n\nCloses #10229 from andrewor14/unroll-test-comments.\n\n(cherry picked from commit 8770bd1213f9b1051dabde9c5424ae7b32143a44)\nSigned-off-by: Josh Rosen <joshrosen@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/d86a88da677041d3c4ab484ed6f4f152674091f0"},{"sha":"9fe8dc916e8a30914199b1fbb8c3765ba742559a","author":{"email":"8adc4758e0403b3bd961e4e414291eaa9ba64098@databricks.com","name":"Yin Huai"},"message":"[SPARK-11678][SQL][DOCS] Document basePath in the programming guide.\n\nThis PR adds document for `basePath`, which is a new parameter used by `HadoopFsRelation`.\n\nThe compiled doc is shown below.\n![image](https://cloud.githubusercontent.com/assets/2072857/11673132/1ba01192-9dcb-11e5-98d9-ac0b4e92e98c.png)\n\nJIRA: https://issues.apache.org/jira/browse/SPARK-11678\n\nAuthor: Yin Huai <yhuai@databricks.com>\n\nCloses #10211 from yhuai/basePathDoc.\n\n(cherry picked from commit ac8cdf1cdc148bd21290ecf4d4f9874f8c87cc14)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/9fe8dc916e8a30914199b1fbb8c3765ba742559a"},{"sha":"699f497cf7ceefbaed689b6f3515f8a2ebc636ca","author":{"email":"52e35f341ea3ac9b5350d7ef6f0bef4e74c94f03@cloudera.com","name":"Mark Grover"},"message":"[SPARK-11796] Fix httpclient and httpcore depedency issues related to docker-client\n\nThis commit fixes dependency issues which prevented the Docker-based JDBC integration tests from running in the Maven build.\n\nAuthor: Mark Grover <mgrover@cloudera.com>\n\nCloses #9876 from markgrover/master_docker.\n\n(cherry picked from commit 2166c2a75083c2262e071a652dd52b1a33348b6e)\nSigned-off-by: Josh Rosen <joshrosen@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/699f497cf7ceefbaed689b6f3515f8a2ebc636ca"},{"sha":"f6d8661738b5a4b139c4800d5c4e9f0094068451","author":{"email":"4330a85689689e23b81e88bdf5853b25c33529eb@gmail.com","name":"Tathagata Das"},"message":"[SPARK-12244][SPARK-12245][STREAMING] Rename trackStateByKey to mapWithState and change tracking function signature\n\nSPARK-12244:\n\nBased on feedback from early users and personal experience attempting to explain it, the name trackStateByKey had two problem.\n\"trackState\" is a completely new term which really does not give any intuition on what the operation is\nthe resultant data stream of objects returned by the function is called in docs as the \"emitted\" data for the lack of a better.\n\"mapWithState\" makes sense because the API is like a mapping function like (Key, Value) => T with State as an additional parameter. The resultant data stream is \"mapped data\". So both problems are solved.\n\nSPARK-12245:\n\nFrom initial experiences, not having the key in the function makes it hard to return mapped stuff, as the whole information of the records is not there. Basically the user is restricted to doing something like mapValue() instead of map(). So adding the key as a parameter.\n\nAuthor: Tathagata Das <tathagata.das1565@gmail.com>\n\nCloses #10224 from tdas/rename.","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/f6d8661738b5a4b139c4800d5c4e9f0094068451"},{"sha":"b5e5812f9ef8aa8d133a75bb8aa8dd8680130efa","author":{"email":"1a1ab5abfb65135a4f49eb66e79d9e570e28807d@us.ibm.com","name":"bomeng"},"message":"[SPARK-12136][STREAMING] rddToFileName does not properly handle prefix and suffix parameters\n\nThe original code does not properly handle the cases where the prefix is null, but suffix is not null - the suffix should be used but is not.\n\nThe fix is using StringBuilder to construct the proper file name.\n\nAuthor: bomeng <bmeng@us.ibm.com>\nAuthor: Bo Meng <mengbo@bos-macbook-pro.usca.ibm.com>\n\nCloses #10185 from bomeng/SPARK-12136.\n\n(cherry picked from commit e29704f90dfe67d9e276d242699ac0a00f64fb91)\nSigned-off-by: Sean Owen <sowen@cloudera.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/b5e5812f9ef8aa8d133a75bb8aa8dd8680130efa"},{"sha":"f939c71b187cff3a5bb63aa3659429b6efb0626d","author":{"email":"c9d35a384bc579d1c6c8c055f2a2b5c04e11b521@databricks.com","name":"Reynold Xin"},"message":"[SPARK-12242][SQL] Add DataFrame.transform method\n\nAuthor: Reynold Xin <rxin@databricks.com>\n\nCloses #10226 from rxin/df-transform.\n\n(cherry picked from commit 76540b6df5370b463277d3498097b2cc2d2e97a8)\nSigned-off-by: Reynold Xin <rxin@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/f939c71b187cff3a5bb63aa3659429b6efb0626d"},{"sha":"b7b9f772751dc4ea7eb28a2bdb897a04e563fafa","author":{"email":"452ae006f36be6c70342f33f64bb6f6eb552689c@gmail.com","name":"Yanbo Liang"},"message":"[SPARK-12198][SPARKR] SparkR support read.parquet and deprecate parquetFile\n\nSparkR support ```read.parquet``` and deprecate ```parquetFile```. This change is similar with #10145 for ```jsonFile```.\n\nAuthor: Yanbo Liang <ybliang8@gmail.com>\n\nCloses #10191 from yanboliang/spark-12198.\n\n(cherry picked from commit eeb58722ad73441eeb5f35f864be3c5392cfd426)\nSigned-off-by: Shivaram Venkataraman <shivaram@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/b7b9f772751dc4ea7eb28a2bdb897a04e563fafa"},{"sha":"e65c88536ad1843a45e0fe3cf1edadfdf4ad3460","author":{"email":"66332c93c294b372ab1bdd5acb9b89a538e2d2f2@gmail.com","name":"Yuhao Yang"},"message":"[SPARK-11602][MLLIB] Refine visibility for 1.6 scala API audit\n\njira: https://issues.apache.org/jira/browse/SPARK-11602\n\nMade a pass on the API change of 1.6. Open the PR for efficient discussion.\n\nAuthor: Yuhao Yang <hhbyyh@gmail.com>\n\nCloses #9939 from hhbyyh/auditScala.\n\n(cherry picked from commit 9fba9c8004d2b97549e5456fa7918965bec27336)\nSigned-off-by: Joseph K. Bradley <joseph@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/e65c88536ad1843a45e0fe3cf1edadfdf4ad3460"},{"sha":"93ef2463820928f434f9fb1542bc30cfb1cec9aa","author":{"email":"452ae006f36be6c70342f33f64bb6f6eb552689c@gmail.com","name":"Yanbo Liang"},"message":"[SPARK-12234][SPARKR] Fix ```subset``` function error when only set ```select``` argument\n\nFix ```subset``` function error when only set ```select``` argument. Please refer to the [JIRA](https://issues.apache.org/jira/browse/SPARK-12234) about the error and how to reproduce it.\n\ncc sun-rui felixcheung shivaram\n\nAuthor: Yanbo Liang <ybliang8@gmail.com>\n\nCloses #10217 from yanboliang/spark-12234.\n\n(cherry picked from commit d9d354ed40eec56b3f03d32f4e2629d367b1bf02)\nSigned-off-by: Shivaram Venkataraman <shivaram@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/93ef2463820928f434f9fb1542bc30cfb1cec9aa"},{"sha":"e541f703d72d3dd3ad96db55650c5b1a1a5a38e2","author":{"email":"e6f14efef9fae0ae8f92d04007faea68035873ce@databricks.com","name":"Cheng Lian"},"message":"[SPARK-12012][SQL][BRANCH-1.6] Show more comprehensive PhysicalRDD metadata when visualizing SQL query plan\n\nThis PR backports PR #10004 to branch-1.6\n\nIt adds a private[sql] method metadata to SparkPlan, which can be used to describe detail information about a physical plan during visualization. Specifically, this PR uses this method to provide details of PhysicalRDDs translated from a data source relation.\n\nAuthor: Cheng Lian <lian@databricks.com>\n\nCloses #10250 from liancheng/spark-12012.for-1.6.","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/e541f703d72d3dd3ad96db55650c5b1a1a5a38e2"},{"sha":"594fafc6122ad9c6b24bdb4a434d97158c7745f3","author":{"email":"8adc4758e0403b3bd961e4e414291eaa9ba64098@databricks.com","name":"Yin Huai"},"message":"[SPARK-12250][SQL] Allow users to define a UDAF without providing details of its inputSchema\n\nhttps://issues.apache.org/jira/browse/SPARK-12250\n\nAuthor: Yin Huai <yhuai@databricks.com>\n\nCloses #10236 from yhuai/SPARK-12250.\n\n(cherry picked from commit bc5f56aa60a430244ffa0cacd81c0b1ecbf8d68f)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/594fafc6122ad9c6b24bdb4a434d97158c7745f3"},{"sha":"d0307deaa29d5fcf1c675f9367c26aa6a3db3fba","author":{"email":"5a279bc90c6f3ee7b2e009f7070db93eec368853@databricks.com","name":"Timothy Hunter"},"message":"[SPARK-12212][ML][DOC] Clarifies the difference between spark.ml, spark.mllib and mllib in the documentation.\n\nReplaces a number of occurences of `MLlib` in the documentation that were meant to refer to the `spark.mllib` package instead. It should clarify for new users the difference between `spark.mllib` (the package) and MLlib (the umbrella project for ML in spark).\n\nIt also removes some files that I forgot to delete with #10207\n\nAuthor: Timothy Hunter <timhunter@databricks.com>\n\nCloses #10234 from thunterdb/12212.\n\n(cherry picked from commit 2ecbe02d5b28ee562d10c1735244b90a08532c9e)\nSigned-off-by: Joseph K. Bradley <joseph@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/d0307deaa29d5fcf1c675f9367c26aa6a3db3fba"},{"sha":"9870e5c7af87190167ca3845ede918671b9420ca","author":{"email":"e5dd8a3899598b2e85930c5ff06b11c053ef654f@databricks.com","name":"Josh Rosen"},"message":"[SPARK-12251] Document and improve off-heap memory configurations\n\nThis patch adds documentation for Spark configurations that affect off-heap memory and makes some naming and validation improvements for those configs.\n\n- Change `spark.memory.offHeapSize` to `spark.memory.offHeap.size`. This is fine because this configuration has not shipped in any Spark release yet (it's new in Spark 1.6).\n- Deprecated `spark.unsafe.offHeap` in favor of a new `spark.memory.offHeap.enabled` configuration. The motivation behind this change is to gather all memory-related configurations under the same prefix.\n- Add a check which prevents users from setting `spark.memory.offHeap.enabled=true` when `spark.memory.offHeap.size == 0`. After SPARK-11389 (#9344), which was committed in Spark 1.6, Spark enforces a hard limit on the amount of off-heap memory that it will allocate to tasks. As a result, enabling off-heap execution memory without setting `spark.memory.offHeap.size` will lead to immediate OOMs. The new configuration validation makes this scenario easier to diagnose, helping to avoid user confusion.\n- Document these configurations on the configuration page.\n\nAuthor: Josh Rosen <joshrosen@databricks.com>\n\nCloses #10237 from JoshRosen/SPARK-12251.\n\n(cherry picked from commit 23a9e62bad9669e9ff5dc4bd714f58d12f9be0b5)\nSigned-off-by: Andrew Or <andrew@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/9870e5c7af87190167ca3845ede918671b9420ca"},{"sha":"c247b6a6546e12e3c6992c40cad1881d56aefd6f","author":{"email":"02e0a999c50b1f88df7a8f5a04e1b76b35ea6a88@databricks.com","name":"Andrew Or"},"message":"[SPARK-12155][SPARK-12253] Fix executor OOM in unified memory management\n\n**Problem.** In unified memory management, acquiring execution memory may lead to eviction of storage memory. However, the space freed from evicting cached blocks is distributed among all active tasks. Thus, an incorrect upper bound on the execution memory per task can cause the acquisition to fail, leading to OOM's and premature spills.\n\n**Example.** Suppose total memory is 1000B, cached blocks occupy 900B, `spark.memory.storageFraction` is 0.4, and there are two active tasks. In this case, the cap on task execution memory is 100B / 2 = 50B. If task A tries to acquire 200B, it will evict 100B of storage but can only acquire 50B because of the incorrect cap. For another example, see this [regression test](https://github.com/andrewor14/spark/blob/fix-oom/core/src/test/scala/org/apache/spark/memory/UnifiedMemoryManagerSuite.scala#L233) that I stole from JoshRosen.\n\n**Solution.** Fix the cap on task execution memory. It should take into account the space that could have been freed by storage in addition to the current amount of memory available to execution. In the example above, the correct cap should have been 600B / 2 = 300B.\n\nThis patch also guards against the race condition (SPARK-12253):\n(1) Existing tasks collectively occupy all execution memory\n(2) New task comes in and blocks while existing tasks spill\n(3) After tasks finish spilling, another task jumps in and puts in a large block, stealing the freed memory\n(4) New task still cannot acquire memory and goes back to sleep\n\nAuthor: Andrew Or <andrew@databricks.com>\n\nCloses #10240 from andrewor14/fix-oom.\n\n(cherry picked from commit 5030923ea8bb94ac8fa8e432de9fc7089aa93986)\nSigned-off-by: Andrew Or <andrew@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/c247b6a6546e12e3c6992c40cad1881d56aefd6f"},{"sha":"5d3722f8e5cdb4abd946ea18950225919af53a11","author":{"email":"2676c1e0be9d9df57419d05258d46b7142312de2@hortonworks.com","name":"jerryshao"},"message":"[STREAMING][DOC][MINOR] Update the description of direct Kafka stream doc\n\nWith the merge of [SPARK-8337](https://issues.apache.org/jira/browse/SPARK-8337), now the Python API has the same functionalities compared to Scala/Java, so here changing the description to make it more precise.\n\nzsxwing tdas , please review, thanks a lot.\n\nAuthor: jerryshao <sshao@hortonworks.com>\n\nCloses #10246 from jerryshao/direct-kafka-doc-update.\n\n(cherry picked from commit 24d3357d66e14388faf8709b368edca70ea96432)\nSigned-off-by: Shixiong Zhu <shixiong@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/5d3722f8e5cdb4abd946ea18950225919af53a11"},{"sha":"d09af2cb4237cca9ac72aacb9abb822a2982a820","author":{"email":"c437f8b7af73b0a10ecac061712ff9de6d41089e@databricks.com","name":"Davies Liu"},"message":"[SPARK-12258][SQL] passing null into ScalaUDF\n\nCheck nullability and passing them into ScalaUDF.\n\nCloses #10249\n\nAuthor: Davies Liu <davies@databricks.com>\n\nCloses #10259 from davies/udf_null.\n\n(cherry picked from commit b1b4ee7f3541d92c8bc2b0b4fdadf46cfdb09504)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/markhamstra/spark/commits/d09af2cb4237cca9ac72aacb9abb822a2982a820"}]}