Skip to content
Snippets Groups Projects
  1. Sep 28, 2016
  2. Sep 27, 2016
    • hyukjinkwon's avatar
      [SPARK-17499][SPARKR][FOLLOWUP] Check null first for layers in spark.mlp to... · 4a833956
      hyukjinkwon authored
      [SPARK-17499][SPARKR][FOLLOWUP] Check null first for layers in spark.mlp to avoid warnings in test results
      
      ## What changes were proposed in this pull request?
      
      Some tests in `test_mllib.r` are as below:
      
      ```r
      expect_error(spark.mlp(df, layers = NULL), "layers must be a integer vector with length > 1.")
      expect_error(spark.mlp(df, layers = c()), "layers must be a integer vector with length > 1.")
      ```
      
      The problem is, `is.na` is internally called via `na.omit` in `spark.mlp` which causes warnings as below:
      
      ```
      Warnings -----------------------------------------------------------------------
      1. spark.mlp (test_mllib.R#400) - is.na() applied to non-(list or vector) of type 'NULL'
      
      2. spark.mlp (test_mllib.R#401) - is.na() applied to non-(list or vector) of type 'NULL'
      ```
      
      ## How was this patch tested?
      
      Manually tested. Also, Jenkins tests and AppVeyor.
      
      Author: hyukjinkwon <gurwls223@gmail.com>
      
      Closes #15232 from HyukjinKwon/remove-warnnings.
      4a833956
    • Josh Rosen's avatar
      [SPARK-17666] Ensure that RecordReaders are closed by data source file scans · b03b4adf
      Josh Rosen authored
      ## What changes were proposed in this pull request?
      
      This patch addresses a potential cause of resource leaks in data source file scans. As reported in [SPARK-17666](https://issues.apache.org/jira/browse/SPARK-17666), tasks which do not fully-consume their input may cause file handles / network connections (e.g. S3 connections) to be leaked. Spark's `NewHadoopRDD` uses a TaskContext callback to [close its record readers](https://github.com/apache/spark/blame/master/core/src/main/scala/org/apache/spark/rdd/NewHadoopRDD.scala#L208), but the new data source file scans will only close record readers once their iterators are fully-consumed.
      
      This patch modifies `RecordReaderIterator` and `HadoopFileLinesReader` to add `close()` methods and modifies all six implementations of `FileFormat.buildReader()` to register TaskContext task completion callbacks to guarantee that cleanup is eventually performed.
      
      ## How was this patch tested?
      
      Tested manually for now.
      
      Author: Josh Rosen <joshrosen@databricks.com>
      
      Closes #15245 from JoshRosen/SPARK-17666-close-recordreader.
      b03b4adf
    • Liang-Chi Hsieh's avatar
      [SPARK-17056][CORE] Fix a wrong assert regarding unroll memory in MemoryStore · e7bce9e1
      Liang-Chi Hsieh authored
      ## What changes were proposed in this pull request?
      
      There is an assert in MemoryStore's putIteratorAsValues method which is used to check if unroll memory is not released too much. This assert looks wrong.
      
      ## How was this patch tested?
      
      Jenkins tests.
      
      Author: Liang-Chi Hsieh <simonh@tw.ibm.com>
      
      Closes #14642 from viirya/fix-unroll-memory.
      e7bce9e1
    • Josh Rosen's avatar
      [SPARK-17618] Guard against invalid comparisons between UnsafeRow and other formats · 2f84a686
      Josh Rosen authored
      This patch ports changes from #15185 to Spark 2.x. In that patch, a  correctness bug in Spark 1.6.x which was caused by an invalid `equals()` comparison between an `UnsafeRow` and another row of a different format. Spark 2.x is not affected by that specific correctness bug but it can still reap the error-prevention benefits of that patch's changes, which modify  ``UnsafeRow.equals()` to throw an IllegalArgumentException if it is called with an object that is not an `UnsafeRow`.
      
      Author: Josh Rosen <joshrosen@databricks.com>
      
      Closes #15265 from JoshRosen/SPARK-17618-master.
      2f84a686
    • Reynold Xin's avatar
      [SPARK-17677][SQL] Break WindowExec.scala into multiple files · 67c73052
      Reynold Xin authored
      ## What changes were proposed in this pull request?
      As of Spark 2.0, all the window function execution code are in WindowExec.scala. This file is pretty large (over 1k loc) and has a lot of different abstractions in them. This patch creates a new package sql.execution.window, moves WindowExec.scala in it, and breaks WindowExec.scala into multiple, more maintainable pieces:
      
      - AggregateProcessor.scala
      - BoundOrdering.scala
      - RowBuffer.scala
      - WindowExec
      - WindowFunctionFrame.scala
      
      ## How was this patch tested?
      This patch mostly moves code around, and should not change any existing test coverage.
      
      Author: Reynold Xin <rxin@databricks.com>
      
      Closes #15252 from rxin/SPARK-17677.
      67c73052
    • gatorsmile's avatar
      [SPARK-17660][SQL] DESC FORMATTED for VIEW Lacks View Definition · 2ab24a7b
      gatorsmile authored
      ### What changes were proposed in this pull request?
      Before this PR, `DESC FORMATTED` does not have a section for the view definition. We should add it for permanent views, like what Hive does.
      
      ```
      +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-------+
      |col_name                    |data_type                                                                                                                            |comment|
      +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-------+
      |a                           |int                                                                                                                                  |null   |
      |                            |                                                                                                                                     |       |
      |# Detailed Table Information|                                                                                                                                     |       |
      |Database:                   |default                                                                                                                              |       |
      |Owner:                      |xiaoli                                                                                                                               |       |
      |Create Time:                |Sat Sep 24 21:46:19 PDT 2016                                                                                                         |       |
      |Last Access Time:           |Wed Dec 31 16:00:00 PST 1969                                                                                                         |       |
      |Location:                   |                                                                                                                                     |       |
      |Table Type:                 |VIEW                                                                                                                                 |       |
      |Table Parameters:           |                                                                                                                                     |       |
      |  transient_lastDdlTime     |1474778779                                                                                                                           |       |
      |                            |                                                                                                                                     |       |
      |# Storage Information       |                                                                                                                                     |       |
      |SerDe Library:              |org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe                                                                                   |       |
      |InputFormat:                |org.apache.hadoop.mapred.SequenceFileInputFormat                                                                                     |       |
      |OutputFormat:               |org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat                                                                            |       |
      |Compressed:                 |No                                                                                                                                   |       |
      |Storage Desc Parameters:    |                                                                                                                                     |       |
      |  serialization.format      |1                                                                                                                                    |       |
      |                            |                                                                                                                                     |       |
      |# View Information          |                                                                                                                                     |       |
      |View Original Text:         |SELECT * FROM tbl                                                                                                                    |       |
      |View Expanded Text:         |SELECT `gen_attr_0` AS `a` FROM (SELECT `gen_attr_0` FROM (SELECT `a` AS `gen_attr_0` FROM `default`.`tbl`) AS gen_subquery_0) AS tbl|       |
      +----------------------------+-------------------------------------------------------------------------------------------------------------------------------------+-------+
      ```
      
      ### How was this patch tested?
      Added a test case
      
      Author: gatorsmile <gatorsmile@gmail.com>
      
      Closes #15234 from gatorsmile/descFormattedView.
      2ab24a7b
    • Reynold Xin's avatar
      [SPARK-17682][SQL] Mark children as final for unary, binary, leaf expressions and plan nodes · 120723f9
      Reynold Xin authored
      ## What changes were proposed in this pull request?
      This patch marks the children method as final in unary, binary, and leaf expressions and plan nodes (both logical plan and physical plan), as brought up in http://apache-spark-developers-list.1001551.n3.nabble.com/Should-LeafExpression-have-children-final-override-like-Nondeterministic-td19104.html
      
      ## How was this patch tested?
      This is a simple modifier change and has no impact on test coverage.
      
      Author: Reynold Xin <rxin@databricks.com>
      
      Closes #15256 from rxin/SPARK-17682.
      120723f9
    • hyukjinkwon's avatar
      [SPARK-16516][SQL] Support for pushing down filters for decimal and timestamp types in ORC · 2cac3b2d
      hyukjinkwon authored
      ## What changes were proposed in this pull request?
      
      It seems ORC supports all the types in  ([`PredicateLeaf.Type`](https://github.com/apache/hive/blob/e085b7e9bd059d91aaf013df0db4d71dca90ec6f/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java#L50-L56)) which includes timestamp type and decimal type.
      
      In more details, the types listed in [`SearchArgumentImpl.boxLiteral()`](https://github.com/apache/hive/blob/branch-1.2/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java#L1068-L1093) can be used as a filter value.
      
      FYI, inital `case` caluse for supported types was introduced in https://github.com/apache/spark/commit/65d71bd9fbfe6fe1b741c80fed72d6ae3d22b028 and this was not changed overtime. At that time, Hive version was, 0.13 which supports only some types for filter-push down (See [SearchArgumentImpl.java#L945-L965](https://github.com/apache/hive/blob/branch-0.13/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java#L945-L965) at 0.13).
      
      However, the version was upgraded into 1.2.x and now it supports more types (See [SearchArgumentImpl.java#L1068-L1093](https://github.com/apache/hive/blob/branch-1.2/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java#L1068-L1093) at 1.2.0)
      
      ## How was this patch tested?
      
      Unit tests in `OrcFilterSuite` and `OrcQuerySuite`
      
      Author: hyukjinkwon <gurwls223@gmail.com>
      
      Closes #14172 from HyukjinKwon/SPARK-16516.
      2cac3b2d
    • hyukjinkwon's avatar
      [SPARK-16777][SQL] Do not use deprecated listType API in ParquetSchemaConverter · 5de1737b
      hyukjinkwon authored
      ## What changes were proposed in this pull request?
      
      This PR removes build waning as below.
      
      ```scala
      [WARNING] .../spark/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetSchemaConverter.scala:448: method listType in object ConversionPatterns is deprecated: see corresponding Javadoc for more information.
      [WARNING]         ConversionPatterns.listType(
      [WARNING]                            ^
      [WARNING] .../spark/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/parquet/ParquetSchemaConverter.scala:464: method listType in object ConversionPatterns is deprecated: see corresponding Javadoc for more information.
      [WARNING]         ConversionPatterns.listType(
      [WARNING]                            ^
      ```
      
      This should not use `listOfElements` (recommended to be replaced from `listType`) instead because the new method checks if the name of elements in Parquet's `LIST` is `element` in Parquet schema and throws an exception if not. However, It seems Spark prior to 1.4.x writes `ArrayType` with Parquet's `LIST` but with `array` as its element name.
      
      Therefore, this PR avoids to use both `listOfElements` and `listType` but just use the existing schema builder to construct the same `GroupType`.
      
      ## How was this patch tested?
      
      Existing tests should cover this.
      
      Author: hyukjinkwon <gurwls223@gmail.com>
      
      Closes #14399 from HyukjinKwon/SPARK-16777.
      5de1737b
    • Weiqing Yang's avatar
      [SPARK-16757] Set up Spark caller context to HDFS and YARN · 6a68c5d7
      Weiqing Yang authored
      ## What changes were proposed in this pull request?
      
      1. Pass `jobId` to Task.
      2. Invoke Hadoop APIs.
          * A new function `setCallerContext` is added in `Utils`. `setCallerContext` function invokes APIs of   `org.apache.hadoop.ipc.CallerContext` to set up spark caller contexts, which will be written into `hdfs-audit.log` and Yarn RM audit log.
          * For HDFS: Spark sets up its caller context by invoking`org.apache.hadoop.ipc.CallerContext` in `Task` and Yarn `Client` and `ApplicationMaster`.
          * For Yarn: Spark sets up its caller context by invoking `org.apache.hadoop.ipc.CallerContext` in Yarn `Client`.
      
      ## How was this patch tested?
      Manual Tests against some Spark applications in Yarn client mode and Yarn cluster mode. Need to check if spark caller contexts are written into HDFS hdfs-audit.log and Yarn RM audit log successfully.
      
      For example, run SparkKmeans in Yarn client mode:
      ```
      ./bin/spark-submit --verbose --executor-cores 3 --num-executors 1 --master yarn --deploy-mode client --class org.apache.spark.examples.SparkKMeans examples/target/original-spark-examples_2.11-2.1.0-SNAPSHOT.jar hdfs://localhost:9000/lr_big.txt 2 5
      ```
      
      **Before**:
      There will be no Spark caller context in records of `hdfs-audit.log` and Yarn RM audit log.
      
      **After**:
      Spark caller contexts will be written in records of `hdfs-audit.log` and Yarn RM audit log.
      
      These are records in `hdfs-audit.log`:
      ```
      2016-09-20 11:54:24,116 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_CLIENT_AppId_application_1474394339641_0005
      2016-09-20 11:54:28,164 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0005_JobId_0_StageId_0_AttemptId_0_TaskId_2_AttemptNum_0
      2016-09-20 11:54:28,164 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0005_JobId_0_StageId_0_AttemptId_0_TaskId_1_AttemptNum_0
      2016-09-20 11:54:28,164 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0005_JobId_0_StageId_0_AttemptId_0_TaskId_0_AttemptNum_0
      ```
      ```
      2016-09-20 11:59:33,868 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=mkdirs	src=/private/tmp/hadoop-wyang/nm-local-dir/usercache/wyang/appcache/application_1474394339641_0006/container_1474394339641_0006_01_000001/spark-warehouse	dst=null	perm=wyang:supergroup:rwxr-xr-x	proto=rpc	callerContext=SPARK_APPLICATION_MASTER_AppId_application_1474394339641_0006_AttemptId_1
      2016-09-20 11:59:37,214 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0006_AttemptId_1_JobId_0_StageId_0_AttemptId_0_TaskId_1_AttemptNum_0
      2016-09-20 11:59:37,215 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0006_AttemptId_1_JobId_0_StageId_0_AttemptId_0_TaskId_2_AttemptNum_0
      2016-09-20 11:59:37,215 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0006_AttemptId_1_JobId_0_StageId_0_AttemptId_0_TaskId_0_AttemptNum_0
      2016-09-20 11:59:42,391 INFO FSNamesystem.audit: allowed=true	ugi=wyang (auth:SIMPLE)	ip=/127.0.0.1	cmd=open	src=/lr_big.txt	dst=null	perm=null	proto=rpc	callerContext=SPARK_TASK_AppId_application_1474394339641_0006_AttemptId_1_JobId_0_StageId_0_AttemptId_0_TaskId_3_AttemptNum_0
      ```
      This is a record in Yarn RM log:
      ```
      2016-09-20 11:59:24,050 INFO org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger: USER=wyang	IP=127.0.0.1	OPERATION=Submit Application Request	TARGET=ClientRMService	RESULT=SUCCESS	APPID=application_1474394339641_0006	CALLERCONTEXT=SPARK_CLIENT_AppId_application_1474394339641_0006
      ```
      
      Author: Weiqing Yang <yangweiqing001@gmail.com>
      
      Closes #14659 from Sherry302/callercontextSubmit.
      6a68c5d7
    • WeichenXu's avatar
      [SPARK-17138][ML][MLIB] Add Python API for multinomial logistic regression · 7f16affa
      WeichenXu authored
      ## What changes were proposed in this pull request?
      
      Add Python API for multinomial logistic regression.
      
      - add `family` param in python api.
      - expose `coefficientMatrix` and `interceptVector` for `LogisticRegressionModel`
      - add python-side testcase for multinomial logistic regression
      - update python doc.
      
      ## How was this patch tested?
      
      existing and added doc tests.
      
      Author: WeichenXu <WeichenXu123@outlook.com>
      
      Closes #14852 from WeichenXu123/add_MLOR_python.
      7f16affa
    • Kazuaki Ishizaki's avatar
      [SPARK-15962][SQL] Introduce implementation with a dense format for UnsafeArrayData · 85b0a157
      Kazuaki Ishizaki authored
      ## What changes were proposed in this pull request?
      
      This PR introduces more compact representation for ```UnsafeArrayData```.
      
      ```UnsafeArrayData``` needs to accept ```null``` value in each entry of an array. In the current version, it has three parts
      ```
      [numElements] [offsets] [values]
      ```
      `Offsets` has the number of `numElements`, and represents `null` if its value is negative. It may increase memory footprint, and introduces an indirection for accessing each of `values`.
      
      This PR uses bitvectors to represent nullability for each element like `UnsafeRow`, and eliminates an indirection for accessing each element. The new ```UnsafeArrayData``` has four parts.
      ```
      [numElements][null bits][values or offset&length][variable length portion]
      ```
      In the `null bits` region, we store 1 bit per element, represents whether an element is null. Its total size is ceil(numElements / 8) bytes, and it is aligned to 8-byte boundaries.
      In the `values or offset&length` region, we store the content of elements. For fields that hold fixed-length primitive types, such as long, double, or int, we store the value directly in the field. For fields with non-primitive or variable-length values, we store a relative offset (w.r.t. the base address of the array) that points to the beginning of the variable-length field and length (they are combined into a long). Each is word-aligned. For `variable length portion`, each is aligned to 8-byte boundaries.
      
      The new format can reduce memory footprint and improve performance of accessing each element. An example of memory foot comparison:
      1024x1024 elements integer array
      Size of ```baseObject``` for ```UnsafeArrayData```: 8 + 1024x1024 + 1024x1024 = 2M bytes
      Size of ```baseObject``` for ```UnsafeArrayData```: 8 + 1024x1024/8 + 1024x1024 = 1.25M bytes
      
      In summary, we got 1.0-2.6x performance improvements over the code before applying this PR.
      Here are performance results of [benchmark programs](https://github.com/kiszk/spark/blob/04d2e4b6dbdc4eff43ce18b3c9b776e0129257c7/sql/core/src/test/scala/org/apache/spark/sql/execution/benchmark/UnsafeArrayDataBenchmark.scala):
      
      **Read UnsafeArrayData**: 1.7x and 1.6x performance improvements over the code before applying this PR
      ````
      OpenJDK 64-Bit Server VM 1.8.0_91-b14 on Linux 4.4.11-200.fc22.x86_64
      Intel Xeon E3-12xx v2 (Ivy Bridge)
      
      Without SPARK-15962
      Read UnsafeArrayData:                    Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            430 /  436        390.0           2.6       1.0X
      Double                                         456 /  485        367.8           2.7       0.9X
      
      With SPARK-15962
      Read UnsafeArrayData:                    Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            252 /  260        666.1           1.5       1.0X
      Double                                         281 /  292        597.7           1.7       0.9X
      ````
      **Write UnsafeArrayData**: 1.0x and 1.1x performance improvements over the code before applying this PR
      ````
      OpenJDK 64-Bit Server VM 1.8.0_91-b14 on Linux 4.0.4-301.fc22.x86_64
      Intel Xeon E3-12xx v2 (Ivy Bridge)
      
      Without SPARK-15962
      Write UnsafeArrayData:                   Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            203 /  273        103.4           9.7       1.0X
      Double                                         239 /  356         87.9          11.4       0.8X
      
      With SPARK-15962
      Write UnsafeArrayData:                   Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            196 /  249        107.0           9.3       1.0X
      Double                                         227 /  367         92.3          10.8       0.9X
      ````
      
      **Get primitive array from UnsafeArrayData**: 2.6x and 1.6x performance improvements over the code before applying this PR
      ````
      OpenJDK 64-Bit Server VM 1.8.0_91-b14 on Linux 4.0.4-301.fc22.x86_64
      Intel Xeon E3-12xx v2 (Ivy Bridge)
      
      Without SPARK-15962
      Get primitive array from UnsafeArrayData: Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            207 /  217        304.2           3.3       1.0X
      Double                                         257 /  363        245.2           4.1       0.8X
      
      With SPARK-15962
      Get primitive array from UnsafeArrayData: Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            151 /  198        415.8           2.4       1.0X
      Double                                         214 /  394        293.6           3.4       0.7X
      ````
      
      **Create UnsafeArrayData from primitive array**: 1.7x and 2.1x performance improvements over the code before applying this PR
      ````
      OpenJDK 64-Bit Server VM 1.8.0_91-b14 on Linux 4.0.4-301.fc22.x86_64
      Intel Xeon E3-12xx v2 (Ivy Bridge)
      
      Without SPARK-15962
      Create UnsafeArrayData from primitive array: Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            340 /  385        185.1           5.4       1.0X
      Double                                         479 /  705        131.3           7.6       0.7X
      
      With SPARK-15962
      Create UnsafeArrayData from primitive array: Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      Int                                            206 /  211        306.0           3.3       1.0X
      Double                                         232 /  406        271.6           3.7       0.9X
      ````
      
      1.7x and 1.4x performance improvements in [```UDTSerializationBenchmark```](https://github.com/apache/spark/blob/master/mllib/src/test/scala/org/apache/spark/mllib/linalg/UDTSerializationBenchmark.scala)  over the code before applying this PR
      ````
      OpenJDK 64-Bit Server VM 1.8.0_91-b14 on Linux 4.4.11-200.fc22.x86_64
      Intel Xeon E3-12xx v2 (Ivy Bridge)
      
      Without SPARK-15962
      VectorUDT de/serialization:              Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      serialize                                      442 /  533          0.0      441927.1       1.0X
      deserialize                                    217 /  274          0.0      217087.6       2.0X
      
      With SPARK-15962
      VectorUDT de/serialization:              Best/Avg Time(ms)    Rate(M/s)   Per Row(ns)   Relative
      ------------------------------------------------------------------------------------------------
      serialize                                      265 /  318          0.0      265138.5       1.0X
      deserialize                                    155 /  197          0.0      154611.4       1.7X
      ````
      
      ## How was this patch tested?
      
      Added unit tests into ```UnsafeArraySuite```
      
      Author: Kazuaki Ishizaki <ishizaki@jp.ibm.com>
      
      Closes #13680 from kiszk/SPARK-15962.
      85b0a157
    • Ding Fei's avatar
      Fix two comments since Actor is not used anymore. · 6ee28423
      Ding Fei authored
      ## What changes were proposed in this pull request?
      
      Fix two comments since Actor is not used anymore.
      
      Author: Ding Fei <danis@danix>
      
      Closes #15251 from danix800/comment-fixing.
      6ee28423
  3. Sep 26, 2016
    • Yanbo Liang's avatar
      [SPARK-17577][FOLLOW-UP][SPARKR] SparkR spark.addFile supports adding directory recursively · 93c743f1
      Yanbo Liang authored
      ## What changes were proposed in this pull request?
      #15140 exposed ```JavaSparkContext.addFile(path: String, recursive: Boolean)``` to Python/R, then we can update SparkR ```spark.addFile``` to support adding directory recursively.
      
      ## How was this patch tested?
      Added unit test.
      
      Author: Yanbo Liang <ybliang8@gmail.com>
      
      Closes #15216 from yanboliang/spark-17577-2.
      93c743f1
    • Andrew Mills's avatar
      [Docs] Update spark-standalone.md to fix link · 00be16df
      Andrew Mills authored
      Corrected a link to the configuration.html page, it was pointing to a page that does not exist (configurations.html).
      
      Documentation change, verified in preview.
      
      Author: Andrew Mills <ammills01@users.noreply.github.com>
      
      Closes #15244 from ammills01/master.
      00be16df
    • Sameer Agarwal's avatar
      [SPARK-17652] Fix confusing exception message while reserving capacity · 7c7586ae
      Sameer Agarwal authored
      ## What changes were proposed in this pull request?
      
      This minor patch fixes a confusing exception message while reserving additional capacity in the vectorized parquet reader.
      
      ## How was this patch tested?
      
      Exisiting Unit Tests
      
      Author: Sameer Agarwal <sameerag@cs.berkeley.edu>
      
      Closes #15225 from sameeragarwal/error-msg.
      7c7586ae
    • Liang-Chi Hsieh's avatar
      [SPARK-17153][SQL] Should read partition data when reading new files in filestream without globbing · 8135e0e5
      Liang-Chi Hsieh authored
      ## What changes were proposed in this pull request?
      
      When reading file stream with non-globbing path, the results return data with all `null`s for the
      partitioned columns. E.g.,
      
          case class A(id: Int, value: Int)
          val data = spark.createDataset(Seq(
            A(1, 1),
            A(2, 2),
            A(2, 3))
          )
          val url = "/tmp/test"
          data.write.partitionBy("id").parquet(url)
          spark.read.parquet(url).show
      
          +-----+---+
          |value| id|
          +-----+---+
          |    2|  2|
          |    3|  2|
          |    1|  1|
          +-----+---+
      
          val s = spark.readStream.schema(spark.read.load(url).schema).parquet(url)
          s.writeStream.queryName("test").format("memory").start()
      
          sql("SELECT * FROM test").show
      
          +-----+----+
          |value|  id|
          +-----+----+
          |    2|null|
          |    3|null|
          |    1|null|
          +-----+----+
      
      ## How was this patch tested?
      
      Jenkins tests.
      
      Author: Liang-Chi Hsieh <simonh@tw.ibm.com>
      Author: Liang-Chi Hsieh <viirya@gmail.com>
      
      Closes #14803 from viirya/filestreamsource-option.
      8135e0e5
    • Shixiong Zhu's avatar
      [SPARK-17649][CORE] Log how many Spark events got dropped in LiveListenerBus · bde85f8b
      Shixiong Zhu authored
      ## What changes were proposed in this pull request?
      
      Log how many Spark events got dropped in LiveListenerBus so that the user can get insights on how to set a correct event queue size.
      
      ## How was this patch tested?
      
      Jenkins
      
      Author: Shixiong Zhu <shixiong@databricks.com>
      
      Closes #15220 from zsxwing/SPARK-17649.
      bde85f8b
    • hyukjinkwon's avatar
      [SPARK-16356][ML] Add testImplicits for ML unit tests and promote toDF() · f234b7cd
      hyukjinkwon authored
      ## What changes were proposed in this pull request?
      
      This was suggested in https://github.com/apache/spark/commit/101663f1ae222a919fc40510aa4f2bad22d1be6f#commitcomment-17114968.
      
      This PR adds `testImplicits` to `MLlibTestSparkContext` so that some implicits such as `toDF()` can be sued across ml tests.
      
      This PR also changes all the usages of `spark.createDataFrame( ... )` to `toDF()` where applicable in ml tests in Scala.
      
      ## How was this patch tested?
      
      Existing tests should work.
      
      Author: hyukjinkwon <gurwls223@gmail.com>
      
      Closes #14035 from HyukjinKwon/minor-ml-test.
      f234b7cd
    • Justin Pihony's avatar
      [SPARK-14525][SQL] Make DataFrameWrite.save work for jdbc · 50b89d05
      Justin Pihony authored
      ## What changes were proposed in this pull request?
      
      This change modifies the implementation of DataFrameWriter.save such that it works with jdbc, and the call to jdbc merely delegates to save.
      
      ## How was this patch tested?
      
      This was tested via unit tests in the JDBCWriteSuite, of which I added one new test to cover this scenario.
      
      ## Additional details
      
      rxin This seems to have been most recently touched by you and was also commented on in the JIRA.
      
      This contribution is my original work and I license the work to the project under the project's open source license.
      
      Author: Justin Pihony <justin.pihony@gmail.com>
      Author: Justin Pihony <justin.pihony@typesafe.com>
      
      Closes #12601 from JustinPihony/jdbc_reconciliation.
      Unverified
      50b89d05
    • Yanbo Liang's avatar
      [SPARK-17017][FOLLOW-UP][ML] Refactor of ChiSqSelector and add ML Python API. · ac65139b
      Yanbo Liang authored
      ## What changes were proposed in this pull request?
      #14597 modified ```ChiSqSelector``` to support ```fpr``` type selector, however, it left some issue need to be addressed:
      * We should allow users to set selector type explicitly rather than switching them by using different setting function, since the setting order will involves some unexpected issue. For example, if users both set ```numTopFeatures``` and ```percentile```, it will train ```kbest``` or ```percentile``` model based on the order of setting (the latter setting one will be trained). This make users confused, and we should allow users to set selector type explicitly. We handle similar issues at other place of ML code base such as ```GeneralizedLinearRegression``` and ```LogisticRegression```.
      * Meanwhile, if there are more than one parameter except ```alpha``` can be set for ```fpr``` model, we can not handle it elegantly in the existing framework. And similar issues for ```kbest``` and ```percentile``` model. Setting selector type explicitly can solve this issue also.
      * If setting selector type explicitly by users is allowed, we should handle param interaction such as if users set ```selectorType = percentile``` and ```alpha = 0.1```, we should notify users the parameter ```alpha``` will take no effect. We should handle complex parameter interaction checks at ```transformSchema```. (FYI #11620)
      * We should use lower case of the selector type names to follow MLlib convention.
      * Add ML Python API.
      
      ## How was this patch tested?
      Unit test.
      
      Author: Yanbo Liang <ybliang8@gmail.com>
      
      Closes #15214 from yanboliang/spark-17017.
      Unverified
      ac65139b
    • Burak Yavuz's avatar
      [SPARK-17650] malformed url's throw exceptions before bricking Executors · 59d87d24
      Burak Yavuz authored
      ## What changes were proposed in this pull request?
      
      When a malformed URL was sent to Executors through `sc.addJar` and `sc.addFile`, the executors become unusable, because they constantly throw `MalformedURLException`s and can never acknowledge that the file or jar is just bad input.
      
      This PR tries to fix that problem by making sure MalformedURLs can never be submitted through `sc.addJar` and `sc.addFile`. Another solution would be to blacklist bad files and jars on Executors. Maybe fail the first time, and then ignore the second time (but print a warning message).
      
      ## How was this patch tested?
      
      Unit tests in SparkContextSuite
      
      Author: Burak Yavuz <brkyvz@gmail.com>
      
      Closes #15224 from brkyvz/SPARK-17650.
      59d87d24
  4. Sep 25, 2016
    • xin wu's avatar
      [SPARK-17551][SQL] Add DataFrame API for null ordering · de333d12
      xin wu authored
      ## What changes were proposed in this pull request?
      This pull request adds Scala/Java DataFrame API for null ordering (NULLS FIRST | LAST).
      
      Also did some minor clean up for related code (e.g. incorrect indentation), and renamed "orderby-nulls-ordering.sql" to be consistent with existing test files.
      
      ## How was this patch tested?
      Added a new test case in DataFrameSuite.
      
      Author: petermaxlee <petermaxlee@gmail.com>
      Author: Xin Wu <xinwu@us.ibm.com>
      
      Closes #15123 from petermaxlee/SPARK-17551.
      de333d12
  5. Sep 24, 2016
  6. Sep 23, 2016
    • Shivaram Venkataraman's avatar
      [SPARK-17651][SPARKR] Set R package version number along with mvn · 7c382524
      Shivaram Venkataraman authored
      ## What changes were proposed in this pull request?
      
      This PR sets the R package version while tagging releases. Note that since R doesn't accept `-SNAPSHOT` in version number field, we remove that while setting the next version
      
      ## How was this patch tested?
      
      Tested manually by running locally
      
      Author: Shivaram Venkataraman <shivaram@cs.berkeley.edu>
      
      Closes #15223 from shivaram/sparkr-version-change.
      7c382524
    • jisookim's avatar
      [SPARK-12221] add cpu time to metrics · 90a30f46
      jisookim authored
      Currently task metrics don't support executor CPU time, so there's no way to calculate how much CPU time a stage/task took from History Server metrics. This PR enables reporting CPU time.
      
      Author: jisookim <jisookim0513@gmail.com>
      
      Closes #10212 from jisookim0513/add-cpu-time-metric.
      90a30f46
    • Michael Armbrust's avatar
      [SPARK-17643] Remove comparable requirement from Offset · 988c7145
      Michael Armbrust authored
      For some sources, it is difficult to provide a global ordering based only on the data in the offset.  Since we don't use comparison for correctness, lets remove it.
      
      Author: Michael Armbrust <michael@databricks.com>
      
      Closes #15207 from marmbrus/removeComparable.
      988c7145
    • Jeff Zhang's avatar
      [SPARK-17210][SPARKR] sparkr.zip is not distributed to executors when running sparkr in RStudio · f62ddc59
      Jeff Zhang authored
      ## What changes were proposed in this pull request?
      
      Spark will add sparkr.zip to archive only when it is yarn mode (SparkSubmit.scala).
      ```
          if (args.isR && clusterManager == YARN) {
            val sparkRPackagePath = RUtils.localSparkRPackagePath
            if (sparkRPackagePath.isEmpty) {
              printErrorAndExit("SPARK_HOME does not exist for R application in YARN mode.")
            }
            val sparkRPackageFile = new File(sparkRPackagePath.get, SPARKR_PACKAGE_ARCHIVE)
            if (!sparkRPackageFile.exists()) {
              printErrorAndExit(s"$SPARKR_PACKAGE_ARCHIVE does not exist for R application in YARN mode.")
            }
            val sparkRPackageURI = Utils.resolveURI(sparkRPackageFile.getAbsolutePath).toString
      
            // Distribute the SparkR package.
            // Assigns a symbol link name "sparkr" to the shipped package.
            args.archives = mergeFileLists(args.archives, sparkRPackageURI + "#sparkr")
      
            // Distribute the R package archive containing all the built R packages.
            if (!RUtils.rPackages.isEmpty) {
              val rPackageFile =
                RPackageUtils.zipRLibraries(new File(RUtils.rPackages.get), R_PACKAGE_ARCHIVE)
              if (!rPackageFile.exists()) {
                printErrorAndExit("Failed to zip all the built R packages.")
              }
      
              val rPackageURI = Utils.resolveURI(rPackageFile.getAbsolutePath).toString
              // Assigns a symbol link name "rpkg" to the shipped package.
              args.archives = mergeFileLists(args.archives, rPackageURI + "#rpkg")
            }
          }
      ```
      So it is necessary to pass spark.master from R process to JVM. Otherwise sparkr.zip won't be distributed to executor.  Besides that I also pass spark.yarn.keytab/spark.yarn.principal to spark side, because JVM process need them to access secured cluster.
      
      ## How was this patch tested?
      
      Verify it manually in R Studio using the following code.
      ```
      Sys.setenv(SPARK_HOME="/Users/jzhang/github/spark")
      .libPaths(c(file.path(Sys.getenv(), "R", "lib"), .libPaths()))
      library(SparkR)
      sparkR.session(master="yarn-client", sparkConfig = list(spark.executor.instances="1"))
      df <- as.DataFrame(mtcars)
      head(df)
      
      ```
      
      …
      
      Author: Jeff Zhang <zjffdu@apache.org>
      
      Closes #14784 from zjffdu/SPARK-17210.
      f62ddc59
    • WeichenXu's avatar
      [SPARK-17499][SPARKR][ML][MLLIB] make the default params in sparkR spark.mlp... · f89808b0
      WeichenXu authored
      [SPARK-17499][SPARKR][ML][MLLIB] make the default params in sparkR spark.mlp consistent with MultilayerPerceptronClassifier
      
      ## What changes were proposed in this pull request?
      
      update `MultilayerPerceptronClassifierWrapper.fit` paramter type:
      `layers: Array[Int]`
      `seed: String`
      
      update several default params in sparkR `spark.mlp`:
      `tol` --> 1e-6
      `stepSize` --> 0.03
      `seed` --> NULL ( when seed == NULL, the scala-side wrapper regard it as a `null` value and the seed will use the default one )
      r-side `seed` only support 32bit integer.
      
      remove `layers` default value, and move it in front of those parameters with default value.
      add `layers` parameter validation check.
      
      ## How was this patch tested?
      
      tests added.
      
      Author: WeichenXu <WeichenXu123@outlook.com>
      
      Closes #15051 from WeichenXu123/update_py_mlp_default.
      f89808b0
    • Holden Karau's avatar
      [SPARK-16861][PYSPARK][CORE] Refactor PySpark accumulator API on top of Accumulator V2 · 90d57542
      Holden Karau authored
      ## What changes were proposed in this pull request?
      
      Move the internals of the PySpark accumulator API from the old deprecated API on top of the new accumulator API.
      
      ## How was this patch tested?
      
      The existing PySpark accumulator tests (both unit tests and doc tests at the start of accumulator.py).
      
      Author: Holden Karau <holden@us.ibm.com>
      
      Closes #14467 from holdenk/SPARK-16861-refactor-pyspark-accumulator-api.
      Unverified
      90d57542
    • hyukjinkwon's avatar
      [BUILD] Closes some stale PRs · 5c5396cb
      hyukjinkwon authored
      ## What changes were proposed in this pull request?
      
      This PR proposes to close some stale PRs and ones suggested to be closed by committer(s)
      
      Closes #12415
      Closes #14765
      Closes #15118
      Closes #15184
      Closes #15183
      Closes #9440
      Closes #15023
      Closes #14643
      Closes #14827
      
      ## How was this patch tested?
      
      N/A
      
      Author: hyukjinkwon <gurwls223@gmail.com>
      
      Closes #15198 from HyukjinKwon/stale-prs.
      Unverified
      5c5396cb
    • Shixiong Zhu's avatar
      [SPARK-17640][SQL] Avoid using -1 as the default batchId for FileStreamSource.FileEntry · 62ccf27a
      Shixiong Zhu authored
      ## What changes were proposed in this pull request?
      
      Avoid using -1 as the default batchId for FileStreamSource.FileEntry so that we can make sure not writing any FileEntry(..., batchId = -1) into the log. This also avoids people misusing it in future (#15203 is an example).
      
      ## How was this patch tested?
      
      Jenkins.
      
      Author: Shixiong Zhu <shixiong@databricks.com>
      
      Closes #15206 from zsxwing/cleanup.
      62ccf27a
    • Joseph K. Bradley's avatar
      [SPARK-16719][ML] Random Forests should communicate fewer trees on each iteration · 947b8c6e
      Joseph K. Bradley authored
      ## What changes were proposed in this pull request?
      
      RandomForest currently sends the entire forest to each worker on each iteration. This is because (a) the node queue is FIFO and (b) the closure references the entire array of trees (topNodes). (a) causes RFs to handle splits in many trees, especially early on in learning. (b) sends all trees explicitly.
      
      This PR:
      (a) Change the RF node queue to be FILO (a stack), so that RFs tend to focus on 1 or a few trees before focusing on others.
      (b) Change topNodes to pass only the trees required on that iteration.
      
      ## How was this patch tested?
      
      Unit tests:
      * Existing tests for correctness of tree learning
      * Manually modifying code and running tests to verify that a small number of trees are communicated on each iteration
        * This last item is hard to test via unit tests given the current APIs.
      
      Author: Joseph K. Bradley <joseph@databricks.com>
      
      Closes #14359 from jkbradley/rfs-fewer-trees.
      947b8c6e
  7. Sep 22, 2016
Loading