Re: spark data frame write.mode("append") bug
Hi All, https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L48 In Present spark version in line 48 there is a bug, to check whether table exists in a database using limit doesnt work for all databases sql server for example. best way to check whehter table exists in any database is to use, select * from table where 1=2; or select 1 from table where 1=2; this supports all the databases. In spark 1.6 can this change be implemented, this lets write.mode("append") bug to go away. def tableExists(conn: Connection, table: String): Boolean = { // Somewhat hacky, but there isn't a good way to identify whether a table exists for all // SQL database systems, considering "table" could also include the database name. Try(conn.prepareStatement(s"SELECT 1 FROM $table LIMIT 1").executeQuery().next()).isSuccess } Solution:- def tableExists(conn: Connection, table: String): Boolean = { // Somewhat hacky, but there isn't a good way to identify whether a table exists for all // SQL database systems, considering "table" could also include the database name. Try(conn.prepareStatement(s"SELECT 1 FROM $table where 1=2").executeQuery().next()).isSuccess } Thanks On Wed, Dec 9, 2015 at 4:24 PM, Seongduk Cheonwrote: > Not for sure, but I think it is bug as of 1.5. > > Spark is using LIMIT keyword whether a table exists. > > https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L48 > > If your database does not support LIMIT keyword such as SQL Server, spark > try to create table > > https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/DataFrameWriter.scala#L272-L275 > > This issue has already fixed and It will be released on 1.6 > https://issues.apache.org/jira/browse/SPARK-9078 > > > -- > Cheon > > 2015-12-09 22:54 GMT+09:00 kali.tumm...@gmail.com > : > >> Hi Spark Contributors, >> >> I am trying to append data to target table using df.write.mode("append") >> functionality but spark throwing up table already exists exception. >> >> Is there a fix scheduled in later spark release ?, I am using spark 1.5. >> >> val sourcedfmode=sourcedf.write.mode("append") >> sourcedfmode.jdbc(TargetDBinfo.url,TargetDBinfo.table,targetprops) >> >> Full Code:- >> >> https://github.com/kali786516/ScalaDB/blob/master/src/main/java/com/kali/db/SaprkSourceToTargetBulkLoad.scala >> >> Spring Config File:- >> >> https://github.com/kali786516/ScalaDB/blob/master/src/main/resources/SourceToTargetBulkLoad.xml >> >> >> Thanks >> Sri >> >> >> >> -- >> View this message in context: >> http://apache-spark-user-list.1001560.n3.nabble.com/spark-data-frame-write-mode-append-bug-tp25650.html >> Sent from the Apache Spark User List mailing list archive at Nabble.com. >> >> - >> To unsubscribe, e-mail: user-unsubscr...@spark.apache.org >> For additional commands, e-mail: user-h...@spark.apache.org >> >> > > -- Thanks & Regards Sri Tummala
Re: spark data frame write.mode("append") bug
Hi All, https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L48 In Present spark version in line 48 there is a bug, to check whether table exists in a database using limit doesnt work for all databases sql server for example. best way to check whehter table exists in any database is to use, select * from table where 1=2; or select 1 from table where 1=2; this supports all the databases. In spark 1.6 can this change be implemented, this lets write.mode("append") bug to go away. def tableExists(conn: Connection, table: String): Boolean = { // Somewhat hacky, but there isn't a good way to identify whether a table exists for all // SQL database systems, considering "table" could also include the database name. Try(conn.prepareStatement(s"SELECT 1 FROM $table LIMIT 1").executeQuery().next()).isSuccess } Solution:- def tableExists(conn: Connection, table: String): Boolean = { // Somewhat hacky, but there isn't a good way to identify whether a table exists for all // SQL database systems, considering "table" could also include the database name. Try(conn.prepareStatement(s"SELECT 1 FROM $table where 1=2").executeQuery().next()).isSuccess } Thanks -- View this message in context: http://apache-spark-user-list.1001560.n3.nabble.com/spark-data-frame-write-mode-append-bug-tp25650p25693.html Sent from the Apache Spark User List mailing list archive at Nabble.com. - To unsubscribe, e-mail: user-unsubscr...@spark.apache.org For additional commands, e-mail: user-h...@spark.apache.org
Re: spark data frame write.mode("append") bug
If you want to contribute to the project open a JIRA/PR: https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark On Sat, Dec 12, 2015 at 3:13 AM, kali.tumm...@gmail.com < kali.tumm...@gmail.com> wrote: > Hi All, > > > https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L48 > > In Present spark version in line 48 there is a bug, to check whether table > exists in a database using limit doesnt work for all databases sql server > for example. > > best way to check whehter table exists in any database is to use, select * > from table where 1=2; or select 1 from table where 1=2; this supports all > the databases. > > In spark 1.6 can this change be implemented, this lets > write.mode("append") > bug to go away. > > > > def tableExists(conn: Connection, table: String): Boolean = { > > // Somewhat hacky, but there isn't a good way to identify whether a > table exists for all > // SQL database systems, considering "table" could also include the > database name. > Try(conn.prepareStatement(s"SELECT 1 FROM $table LIMIT > 1").executeQuery().next()).isSuccess > } > > Solution:- > def tableExists(conn: Connection, table: String): Boolean = { > > // Somewhat hacky, but there isn't a good way to identify whether a > table exists for all > // SQL database systems, considering "table" could also include the > database name. > Try(conn.prepareStatement(s"SELECT 1 FROM $table where > 1=2").executeQuery().next()).isSuccess > } > > > > Thanks > > > > -- > View this message in context: > http://apache-spark-user-list.1001560.n3.nabble.com/spark-data-frame-write-mode-append-bug-tp25650p25693.html > Sent from the Apache Spark User List mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: user-unsubscr...@spark.apache.org > For additional commands, e-mail: user-h...@spark.apache.org > >
spark data frame write.mode("append") bug
Hi Spark Contributors, I am trying to append data to target table using df.write.mode("append") functionality but spark throwing up table already exists exception. Is there a fix scheduled in later spark release ?, I am using spark 1.5. val sourcedfmode=sourcedf.write.mode("append") sourcedfmode.jdbc(TargetDBinfo.url,TargetDBinfo.table,targetprops) Full Code:- https://github.com/kali786516/ScalaDB/blob/master/src/main/java/com/kali/db/SaprkSourceToTargetBulkLoad.scala Spring Config File:- https://github.com/kali786516/ScalaDB/blob/master/src/main/resources/SourceToTargetBulkLoad.xml Thanks Sri -- View this message in context: http://apache-spark-user-list.1001560.n3.nabble.com/spark-data-frame-write-mode-append-bug-tp25650.html Sent from the Apache Spark User List mailing list archive at Nabble.com. - To unsubscribe, e-mail: user-unsubscr...@spark.apache.org For additional commands, e-mail: user-h...@spark.apache.org
Re: spark data frame write.mode("append") bug
Not for sure, but I think it is bug as of 1.5. Spark is using LIMIT keyword whether a table exists. https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala#L48 If your database does not support LIMIT keyword such as SQL Server, spark try to create table https://github.com/apache/spark/blob/branch-1.5/sql/core/src/main/scala/org/apache/spark/sql/DataFrameWriter.scala#L272-L275 This issue has already fixed and It will be released on 1.6 https://issues.apache.org/jira/browse/SPARK-9078 -- Cheon 2015-12-09 22:54 GMT+09:00 kali.tumm...@gmail.com: > Hi Spark Contributors, > > I am trying to append data to target table using df.write.mode("append") > functionality but spark throwing up table already exists exception. > > Is there a fix scheduled in later spark release ?, I am using spark 1.5. > > val sourcedfmode=sourcedf.write.mode("append") > sourcedfmode.jdbc(TargetDBinfo.url,TargetDBinfo.table,targetprops) > > Full Code:- > > https://github.com/kali786516/ScalaDB/blob/master/src/main/java/com/kali/db/SaprkSourceToTargetBulkLoad.scala > > Spring Config File:- > > https://github.com/kali786516/ScalaDB/blob/master/src/main/resources/SourceToTargetBulkLoad.xml > > > Thanks > Sri > > > > -- > View this message in context: > http://apache-spark-user-list.1001560.n3.nabble.com/spark-data-frame-write-mode-append-bug-tp25650.html > Sent from the Apache Spark User List mailing list archive at Nabble.com. > > - > To unsubscribe, e-mail: user-unsubscr...@spark.apache.org > For additional commands, e-mail: user-h...@spark.apache.org > >