I think you need to remove the hyphen around maxid 

> On 29. May 2017, at 18:11, Mich Talebzadeh <mich.talebza...@gmail.com> wrote:
> 
> Hi,
> 
> This JDBC connection works with Oracle table with primary key ID
> 
> val s = HiveContext.read.format("jdbc").options(
> Map("url" -> _ORACLEserver,
> "dbtable" -> "(SELECT ID, CLUSTERED, SCATTERED, RANDOMISED, RANDOM_STRING, 
> SMALL_VC, PADDING FROM scratchpad.dummy)",
> "partitionColumn" -> "ID",
> "lowerBound" -> "1",
> "upperBound" -> "100000000",
> "numPartitions" -> "4",
> "user" -> _username,
> "password" -> _password)).load
> 
> Note that both lowerbound and upperbound for ID column are fixed.
> 
> However, Itried to workout upperbound dynamically as follows:
> 
> //
> // Get maxID first
> //
> scala> val maxID = HiveContext.read.format("jdbc").options(Map("url" -> 
> _ORACLEserver,"dbtable" -> "(SELECT MAX(ID) AS maxID FROM scratchpad.dummy)",
>      | "user" -> _username, "password" -> 
> _password)).load().collect.apply(0).getDecimal(0)
> maxID: java.math.BigDecimal = 100000000.0000000000
> 
> and this fails
> 
> scala> val s = HiveContext.read.format("jdbc").options(
>      | Map("url" -> _ORACLEserver,
>      | "dbtable" -> "(SELECT ID, CLUSTERED, SCATTERED, RANDOMISED, 
> RANDOM_STRING, SMALL_VC, PADDING FROM scratchpad.dummy)",
>      | "partitionColumn" -> "ID",
>      | "lowerBound" -> "1",
>      | "upperBound" -> "maxID",
>      | "numPartitions" -> "4",
>      | "user" -> _username,
>      | "password" -> _password)).load
> java.lang.NumberFormatException: For input string: "maxID"
>   at 
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
>   at java.lang.Long.parseLong(Long.java:589)
>   at java.lang.Long.parseLong(Long.java:631)
>   at scala.collection.immutable.StringLike$class.toLong(StringLike.scala:276)
>   at scala.collection.immutable.StringOps.toLong(StringOps.scala:29)
>   at 
> org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:42)
>   at 
> org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330)
>   at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
>   at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:125)
>   ... 56 elided
> 
> 
> Any ideas how this can work!
> 
> Thanks
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 

Reply via email to