के साथ टेराडाटा तालिका निकालने के बाद NullPointerException मुझे स्कैला (2.11)/स्पार्क (2.1.0) के साथ छत पर टेराडाटा (केवल पढ़ने के लिए उपयोग) से एक तालिका निकालने की आवश्यकता है। मैं एक dataframe कि मैं लोड कर सकते हैं का निर्माण कर रहा हूँ सफलतापूर्वकस्केल/स्पार्क
val df = spark.read.format("jdbc").options(options).load()
लेकिन df.show
मुझे एक NullPointerException देता है:
java.lang.NullPointerException
at org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter.write(UnsafeRowWriter.java:210)
मैंने किया था एक df.printSchema
और मुझे पता चला है कि इस एनपीई के लिए कारण यह है कि है डेटासेट में (nullable = false)
कॉलम के मान हैं (ऐसा लगता है जैसे टेराडाटा मुझे गलत जानकारी दे रहा है)। दरअसल, अगर मैं समस्याग्रस्त कॉलम छोड़ देता हूं तो मैं df.show
प्राप्त कर सकता हूं।
तो, मैं सभी स्तंभों (nullable = true)
करने के लिए सेट के साथ एक नया स्कीमा निर्दिष्ट करने की कोशिश की:
val new_schema = StructType(df.schema.map {
case StructField(n,d,nu,m) => StructField(n,d,true,m)
})
val new_df = spark.read.format("jdbc").schema(new_schema).options(options).load()
लेकिन तब मुझे मिल गया:
org.apache.spark.sql.AnalysisException: JDBC does not allow user-specified schemas.;
मैं भी पिछले एक से एक नया Dataframe बनाने की कोशिश की , वांछित स्कीमा निर्दिष्ट करना:
val new_df = df.sqlContext.createDataFrame(df.rdd, new_schema)
लेकिन मुझे अभी भी एक एनपीई मिला जब एसी लेना डेटा फ्रेम पर टयन।
इस बारे में कोई विचार कि मैं इसे कैसे ठीक कर सकता हूं?
यह समस्या संबंधित प्रतीत होती है जांच कर सकते हैं, लेकिन अभी भी कोई समाधान नहीं प्रदान की जाती है: https://community.teradata.com/t5/Connectivity/Teradata- जेडीबीसी-चालक-रिटर्न-द-गलत-स्कीमा-कॉलम-शून्यता/टीडी-पी/40628 – RaphDG
अरे @RaphDG क्या आपको इसके लिए कोई समाधान मिला। अब मैं इस समस्या के साथ चल रहा हूँ। – Lakshman
@ लक्ष्मण क्या आप संस्करण 2.1.0 का भी उपयोग कर रहे हैं? – stefanobaghino