<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Databricks 13.3LTS to 15.4 LTS Migration - Spark job with source DB2 database not working in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106875#M42622</link>
    <description>&lt;P&gt;Thanks for the solution.&lt;/P&gt;</description>
    <pubDate>Fri, 24 Jan 2025 06:51:50 GMT</pubDate>
    <dc:creator>sahil_s_jain</dc:creator>
    <dc:date>2025-01-24T06:51:50Z</dc:date>
    <item>
      <title>Databricks 13.3LTS to 15.4 LTS Migration - Spark job with source DB2 database not working</title>
      <link>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106406#M42477</link>
      <description>&lt;P&gt;I'm trying to migrate a spark job from Databricks 13.3 LTS to 15.4 LTS. The spark job uses db2jcc4.jar for DB2 database connection.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is the spark code:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;%scala
// Import Spark SQL
import org.apache.spark.sql.SparkSession

// Create a Spark session
val spark = SparkSession.builder
  .appName("Read DB2 Data")
  .getOrCreate()


// Tried below properties but didn't work.
// spark.conf.set("spark.sql.caseSensitive", "true")
// spark.conf.set("spark.sql.legacy.timeParserPolicy", "LEGACY")
// spark.conf.set("spark.sql.parquet.inferTimestampNTZ.enabled", "false")
// spark.conf.set("spark.sql.legacy.parquet.datetimeRebaseModeInRead", "LEGACY")

// JDBC connection properties
val sqlQuery = """(SELECT * FROM UITC5Schema.AccountDetail_UITest5 order by ID ASC) AS finaldata"""
// Connection URL
val jdbcUrl = s"jdbc:db2://&amp;lt;IP&amp;gt;:50000/db0911"

// Define connection properties
val connectionProperties = new java.util.Properties()
connectionProperties.put("user", "userName1")
connectionProperties.put("password", "pwd123")
connectionProperties.put("driver", "com.ibm.db2.jcc.DB2Driver")
// Tried below property but didn't work.
//connectionProperties.put("nullCatalogMeansCurrent", "false")

// Read data from MSSQL into a DataFrame
val db2DF = spark.read
  .jdbc(jdbcUrl, sqlQuery, connectionProperties)

// Show the data
db2DF.show()

// Perform any transformations or actions on the DataFrame
db2DF.printSchema()&lt;/LI-CODE&gt;&lt;P&gt;Database schema:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;CREATE TABLE "DB2INST1"."CARS"  (
		  "ID" INTEGER , 
		  "CAR" VARCHAR(16 OCTETS) , 
		  "DATE" TIMESTAMP )   
		 IN "USERSPACE1"  
		 ORGANIZE BY ROW;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;For camel case columns, getting below error:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=columnName1, DRIVER=4.9.78
	at com.ibm.db2.jcc.am.fd.a(fd.java:676)&lt;/LI-CODE&gt;&lt;P&gt;When providing columnName1 in double quotes, it is working as expected.&lt;/P&gt;&lt;P&gt;For &lt;STRONG&gt;timestamp columns&lt;/STRONG&gt;, getting below error irrespective of column name/casing:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;[jcc][t4][10144][10862][4.9.78] Invalid parameter calendar: Parameter cannot be null. ERRORCODE=-4461, SQLSTATE=42815 Caused by: SqlSyntaxErrorException: [jcc][t4][10144][10862][4.9.78] Invalid parameter calendar: Parameter cannot be null. ERRORCODE=-4461, SQLSTATE=42815
	at com.ibm.db2.jcc.am.fd.a(fd.java:676) 	at com.ibm.db2.jcc.am.fd.a(fd.java:60) 	at com.ibm.db2.jcc.am.fd.a(fd.java:103) 	at com.ibm.db2.jcc.am.tm.getTimestamp(tm.java:1043) 	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.$anonfun$makeGetter$15(JdbcUtils.scala:512) 	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.$anonfun$makeGetter$15$adapted(JdbcUtils.scala:511) 	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:376) 	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:357) 	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73) 	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37) 	at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:31) 	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(generated.java:26) 	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43) 	at org.apache.spark.sql.execution.WholeStageCodegenEvaluatorFactory$WholeStageCodegenPartitionEvaluator$$anon$1.hasNext(WholeStageCodegenEvaluatorFactory.scala:50) 	at org.apache.spark.sql.execution.collect.UnsafeRowBatchUtils$.$anonfun$encodeUnsafeRows$5(UnsafeRowBatchUtils.scala:88) 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) 	at com.databricks.spark.util.ExecutorFrameProfiler$.record(ExecutorFrameProfiler.scala:110) 	at org.apache.spark.sql.execution.collect.UnsafeRowBatchUtils$.$anonfun$encodeUnsafeRows$3(UnsafeRowBatchUtils.scala:88) 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) 	at com.databricks.spark.util.ExecutorFrameProfiler$.record(ExecutorFrameProfiler.scala:110)&lt;/LI-CODE&gt;&lt;P&gt;For &lt;STRONG&gt;Databricks compute 13.3 LTS&lt;/STRONG&gt;, the provided code is working as expected irrespective of the column name and column data type.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Jan 2025 08:18:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106406#M42477</guid>
      <dc:creator>sahil_s_jain</dc:creator>
      <dc:date>2025-01-21T08:18:17Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks 13.3LTS to 15.4 LTS Migration - Spark job with source DB2 database not working</title>
      <link>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106671#M42544</link>
      <description>&lt;P&gt;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/136821"&gt;@sahil_s_jain&lt;/a&gt;&amp;nbsp;Please try setting this spark property on the 15.4 cluster:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;sparkConf.set("spark.sql.legacy.jdbc.useNullCalendar", "false")&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After the property is set, Spark will not use a Null calendar instance for JDBC operations.&lt;/P&gt;
&lt;P&gt;You can also add the below property to set the spark session timezone:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;spark.conf.set("spark.sql.session.timeZone", "America/New_York")&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 22 Jan 2025 15:50:41 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106671#M42544</guid>
      <dc:creator>Ismael-K</dc:creator>
      <dc:date>2025-01-22T15:50:41Z</dc:date>
    </item>
    <item>
      <title>Re: Databricks 13.3LTS to 15.4 LTS Migration - Spark job with source DB2 database not working</title>
      <link>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106875#M42622</link>
      <description>&lt;P&gt;Thanks for the solution.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jan 2025 06:51:50 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/databricks-13-3lts-to-15-4-lts-migration-spark-job-with-source/m-p/106875#M42622</guid>
      <dc:creator>sahil_s_jain</dc:creator>
      <dc:date>2025-01-24T06:51:50Z</dc:date>
    </item>
  </channel>
</rss>

