How about this?
https://github.com/apache/spark/blob/master/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala#L729
Or, how about using Double or something instead of Numeric?

// maropu

On Fri, Jan 27, 2017 at 10:25 AM, ayan guha <guha.a...@gmail.com> wrote:

> Okay, it is working with varchar columns only. Is there any way to
> workaround this?
>
> On Fri, Jan 27, 2017 at 12:22 PM, ayan guha <guha.a...@gmail.com> wrote:
>
>> hi
>>
>> I thought so too, so I created a table with INT and Varchar columns
>>
>> desc agtest1
>>
>> Name Null Type
>> ---- ---- -------------
>> PID       NUMBER(38)
>> DES       VARCHAR2(100)
>>
>> url="jdbc:oracle:thin:@mpimpclu1-scan:1521/DEVAIM"
>> table = "agtest1"
>> user = "bal"
>> password= "bal"
>> driver="oracle.jdbc.OracleDriver"
>> df = sqlContext.read.jdbc(url=url,table=table,properties={"user":
>> user,"password":password,"driver":driver})
>>
>>
>> Still the issue persists.
>>
>> On Fri, Jan 27, 2017 at 11:19 AM, Takeshi Yamamuro <linguin....@gmail.com
>> > wrote:
>>
>>> Hi,
>>>
>>> I think you got this error because you used `NUMERIC` types in your
>>> schema (https://github.com/apache/spark/blob/master/sql/core/src/ma
>>> in/scala/org/apache/spark/sql/jdbc/OracleDialect.scala#L32). So, IIUC
>>> avoiding the type is a workaround.
>>>
>>> // maropu
>>>
>>>
>>> On Fri, Jan 27, 2017 at 8:18 AM, ayan guha <guha.a...@gmail.com> wrote:
>>>
>>>> Hi
>>>>
>>>> I am facing exact issue with Oracle/Exadataas mentioned here
>>>> <http://stackoverflow.com/questions/41873449/sparksql-key-not-found-scale>.
>>>> Any idea? I could not figure out so sending to this grou hoping someone
>>>> have see it (and solved it)
>>>>
>>>> Spark Version: 1.6
>>>> pyspark command:
>>>>
>>>> pyspark --driver-class-path /opt/oracle/bigdatasql/bdcell-
>>>> 12.1/jlib-bds/kvclient.jar:/opt/oracle/bigdatasql/bdcell-12.
>>>> 1/jlib-bds/ojdbc7.jar:/opt/oracle/bigdatasql/bdcell-12.1/jli
>>>> b-bds/ojdbc7-orig.jar:/opt/oracle/bigdatasql/bdcell-12.1/jli
>>>> b-bds/oracle-hadoop-sql.jar:/opt/oracle/bigdatasql/bdcell-12
>>>> .1/jlib-bds/ora-hadoop-common.jar:/opt/oracle/bigdatasql/bdc
>>>> ell-12.1/jlib-bds/ora-hadoop-common-orig.jar:/opt/oracle/bi
>>>> gdatasql/bdcell-12.1/jlib-bds/orahivedp.jar:/opt/oracle/bigd
>>>> atasql/bdcell-12.1/jlib-bds/orahivedp-orig.jar:/opt/oracle
>>>> /bigdatasql/bdcell-12.1/jlib-bds/orai18n.jar:/opt/oracle/
>>>> bigdatasql/bdcell-12.1/jlib-bds/orai18n-orig.jar:/opt/
>>>> oracle/bigdatasql/bdcell-12.1/jlib-bds/oraloader.jar:/opt/
>>>> oracle/bigdatasql/bdcell-12.1/jlib-bds/oraloader-orig.jar   --conf
>>>> spark.jars=/opt/oracle/bigdatasql/bdcell-12.1/jlib-bds/oracl
>>>> e-hadoop-sql.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-bds
>>>> /ora-hadoop-common.jar,/opt/oracle/bigdatasql/bdcell-12.1/
>>>> jlib-bds/orahivedp.jar,/opt/oracle/bigdatasql/bdcell-12.1/
>>>> jlib-bds/oraloader.jar,/opt/oracle/bigdatasql/bdcell-12.1/
>>>> jlib-bds/ojdbc7.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/orai18n.jar/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/kvclient.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/ojdbc7.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/ojdbc7-orig.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/oracle-hadoop-sql.jar,/opt/oracle/bigdatasql/bdcell-
>>>> 12.1/jlib-bds/ora-hadoop-common.jar,/opt/oracle/bigdata
>>>> sql/bdcell-12.1/jlib-bds/ora-hadoop-common-orig.jar,/opt/
>>>> oracle/bigdatasql/bdcell-12.1/jlib-bds/orahivedp.jar,/opt/
>>>> oracle/bigdatasql/bdcell-12.1/jlib-bds/orahivedp-orig.jar,/
>>>> opt/oracle/bigdatasql/bdcell-12.1/jlib-bds/orai18n.jar,/
>>>> opt/oracle/bigdatasql/bdcell-12.1/jlib-bds/orai18n-orig.
>>>> jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-bds/
>>>> oraloader.jar,/opt/oracle/bigdatasql/bdcell-12.1/jlib-
>>>> bds/oraloader-orig.jar
>>>>
>>>>
>>>> Here is my code:
>>>>
>>>> url="jdbc:oracle:thin:@mpimpclu1-scan:1521/DEVAIM"
>>>> table = "HIST_FORECAST_NEXT_BILL_DGTL"
>>>> user = "bal"
>>>> password= "bal"
>>>> driver="oracle.jdbc.OracleDriver"
>>>> df = sqlContext.read.jdbc(url=url,table=table,properties={"user":
>>>> user,"password":password,"driver":driver})
>>>>
>>>>
>>>> Error:
>>>> Traceback (most recent call last):
>>>>   File "<stdin>", line 1, in <module>
>>>>   File "/opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p2001.2081/lib/s
>>>> park/python/pyspark/sql/readwriter.py", line 289, in jdbc
>>>>     return self._df(self._jreader.jdbc(url, table, jprop))
>>>>   File "/opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p2001.2081/lib/s
>>>> park/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in
>>>> __call__
>>>>   File "/opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p2001.2081/lib/s
>>>> park/python/pyspark/sql/utils.py", line 45, in deco
>>>>     return f(*a, **kw)
>>>>   File "/opt/cloudera/parcels/CDH-5.8.3-1.cdh5.8.3.p2001.2081/lib/s
>>>> park/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in
>>>> get_return_value
>>>> py4j.protocol.Py4JJavaError: An error occurred while calling o40.jdbc.
>>>> : java.util.NoSuchElementException: key not found: scale
>>>>         at scala.collection.MapLike$class.default(MapLike.scala:228)
>>>>         at scala.collection.AbstractMap.default(Map.scala:58)
>>>>         at scala.collection.MapLike$class.apply(MapLike.scala:141)
>>>>         at scala.collection.AbstractMap.apply(Map.scala:58)
>>>>         at org.apache.spark.sql.types.Metadata.get(Metadata.scala:108)
>>>>         at org.apache.spark.sql.types.Metadata.getLong(Metadata.scala:5
>>>> 1)
>>>>         at org.apache.spark.sql.jdbc.OracleDialect$.getCatalystType(Ora
>>>> cleDialect.scala:33)
>>>>         at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.res
>>>> olveTable(JDBCRDD.scala:140)
>>>>         at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation
>>>> .<init>(JDBCRelation.scala:91)
>>>>         at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.sc
>>>> ala:222)
>>>>         at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.sc
>>>> ala:146)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
>>>> ssorImpl.java:62)
>>>>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
>>>> thodAccessorImpl.java:43)
>>>>         at java.lang.reflect.Method.invoke(Method.java:498)
>>>>         at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231)
>>>>         at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.jav
>>>> a:381)
>>>>         at py4j.Gateway.invoke(Gateway.java:259)
>>>>         at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.j
>>>> ava:133)
>>>>         at py4j.commands.CallCommand.execute(CallCommand.java:79)
>>>>         at py4j.GatewayConnection.run(GatewayConnection.java:209)
>>>>         at java.lang.Thread.run(Thread.java:745)
>>>>
>>>>
>>>>
>>>> --
>>>> Best Regards,
>>>> Ayan Guha
>>>>
>>>
>>>
>>>
>>> --
>>> ---
>>> Takeshi Yamamuro
>>>
>>
>>
>>
>> --
>> Best Regards,
>> Ayan Guha
>>
>
>
>
> --
> Best Regards,
> Ayan Guha
>



-- 
---
Takeshi Yamamuro

Reply via email to