<?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>question NiFi java.lang.NullPointerException when reading csv file in Support Questions</title>
    <link>https://community.cloudera.com/t5/Support-Questions/NiFi-java-lang-NullPointerException-when-reading-csv-file/m-p/269513#M206890</link>
    <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 767px;"&gt;&lt;img src="https://community.cloudera.com/t5/image/serverpage/image-id/24266i79C5F21312EF6379/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First of all, I would like to thank community. I am trying my hand in NiFi and I came across a situation that confuses me. I am trying to read a csv file in NiFi using ExecuteScript(yes, I want to use this) processor. All the good records must be collected in one flowFile and the bad records are collected in one flowFile each (this way, I will easily know how many bad records exist.) and then route them to SUCCESS and FAILURE relations accordingly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The script works fine when all the records are good. I deliberately inserted one bad record to test exception and it is not working. As per my knowledge, NiFi should throw ValueError but it throws NullPointerException. Not sure what I am missing. I am new to this and learning. any guidance will be much appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Input:&lt;/P&gt;&lt;P&gt;1,2,3,4&lt;BR /&gt;1,A,3,4&lt;BR /&gt;1,2,3,4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback, OutputStreamCallback
import datetime


class PyOutputStreamCallback(OutputStreamCallback):
  def __init__(self, obj):
        self.obj = obj
  def process(self, outputStream):
    outputStream.write(self.obj+'\n')


flowFile = session.get()
goodflowFile = session.create(flowFile)
badrecords = []

if (flowFile != None):
	inputStream = session.read(flowFile)
	text = IOUtils.readLines(inputStream, StandardCharsets.UTF_8)
	
	for line in text:
	
		try:
			test = str(int(line.split(",")[1])) #VAlue error for 2nd line should happen here. But the script throws NullPointerException
			goodflowFile = session.append(goodflowFile, PyOutputStreamCallback(test))
		
		except Exception as e:
			badrecord = session.create(flowFile)
			badrecord = session.write(badrecord,PyOutputStreamCallback(e))
			badrecords.append(badrecord)
	
	session.transfer(goodflowFile, REL_SUCCESS)
	session.transfer(badrecords, REL_FAILURE)

		
	inputStream.close()
	session.remove(flowFile)
	session.commit()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I am trying to collect all bad records in a list and transfer the list to Failure relation. Let me know if this is right.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/38301"&gt;@mburgess&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/55311"&gt;@Shu_ashu&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 02 Sep 2019 02:26:01 GMT</pubDate>
    <dc:creator>suckerPunch</dc:creator>
    <dc:date>2019-09-02T02:26:01Z</dc:date>
    <item>
      <title>NiFi java.lang.NullPointerException when reading csv file</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-java-lang-NullPointerException-when-reading-csv-file/m-p/269513#M206890</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 767px;"&gt;&lt;img src="https://community.cloudera.com/t5/image/serverpage/image-id/24266i79C5F21312EF6379/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;Hello All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First of all, I would like to thank community. I am trying my hand in NiFi and I came across a situation that confuses me. I am trying to read a csv file in NiFi using ExecuteScript(yes, I want to use this) processor. All the good records must be collected in one flowFile and the bad records are collected in one flowFile each (this way, I will easily know how many bad records exist.) and then route them to SUCCESS and FAILURE relations accordingly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The script works fine when all the records are good. I deliberately inserted one bad record to test exception and it is not working. As per my knowledge, NiFi should throw ValueError but it throws NullPointerException. Not sure what I am missing. I am new to this and learning. any guidance will be much appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Input:&lt;/P&gt;&lt;P&gt;1,2,3,4&lt;BR /&gt;1,A,3,4&lt;BR /&gt;1,2,3,4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback, OutputStreamCallback
import datetime


class PyOutputStreamCallback(OutputStreamCallback):
  def __init__(self, obj):
        self.obj = obj
  def process(self, outputStream):
    outputStream.write(self.obj+'\n')


flowFile = session.get()
goodflowFile = session.create(flowFile)
badrecords = []

if (flowFile != None):
	inputStream = session.read(flowFile)
	text = IOUtils.readLines(inputStream, StandardCharsets.UTF_8)
	
	for line in text:
	
		try:
			test = str(int(line.split(",")[1])) #VAlue error for 2nd line should happen here. But the script throws NullPointerException
			goodflowFile = session.append(goodflowFile, PyOutputStreamCallback(test))
		
		except Exception as e:
			badrecord = session.create(flowFile)
			badrecord = session.write(badrecord,PyOutputStreamCallback(e))
			badrecords.append(badrecord)
	
	session.transfer(goodflowFile, REL_SUCCESS)
	session.transfer(badrecords, REL_FAILURE)

		
	inputStream.close()
	session.remove(flowFile)
	session.commit()&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I am trying to collect all bad records in a list and transfer the list to Failure relation. Let me know if this is right.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/38301"&gt;@mburgess&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/55311"&gt;@Shu_ashu&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Sep 2019 02:26:01 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-java-lang-NullPointerException-when-reading-csv-file/m-p/269513#M206890</guid>
      <dc:creator>suckerPunch</dc:creator>
      <dc:date>2019-09-02T02:26:01Z</dc:date>
    </item>
    <item>
      <title>Re: NiFi java.lang.NullPointerException when reading csv file</title>
      <link>https://community.cloudera.com/t5/Support-Questions/NiFi-java-lang-NullPointerException-when-reading-csv-file/m-p/269871#M207141</link>
      <description>&lt;P&gt;I was able to solve it myself.. The error is misleading.. The actual error is date conversion in Jython.. I used datetime library from python but for some reason datatype is being converted to java.sql.Timestamp underneath instead of creating datetime object.. So I was not able to use methods of datatime object. I was able to solve it using calendar and SimpleDateFormat libraries from java..&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Sep 2019 18:17:11 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/NiFi-java-lang-NullPointerException-when-reading-csv-file/m-p/269871#M207141</guid>
      <dc:creator>suckerPunch</dc:creator>
      <dc:date>2019-09-05T18:17:11Z</dc:date>
    </item>
  </channel>
</rss>

