<?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: How to read a fixed length file in Spark using DataFrame API and SCALA in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29532#M21255</link>
    <description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I think you got the answer in stackoverflow&lt;/P&gt;
&lt;P&gt;&lt;A href="http://stackoverflow.com/questions/38773664/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and-scala" target="test_blank"&gt;http://stackoverflow.com/questions/38773664/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and-scala&lt;/A&gt;&lt;/P&gt; 
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 05 Aug 2016 16:58:37 GMT</pubDate>
    <dc:creator>User16789201666</dc:creator>
    <dc:date>2016-08-05T16:58:37Z</dc:date>
    <item>
      <title>How to read a fixed length file in Spark using DataFrame API and SCALA</title>
      <link>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29531#M21254</link>
      <description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I have a fixed length file ( a sample is shown below) and I want to read this file using DataFrames API in Spark using SCALA(not python or java). Using DataFrames API there are ways to read textFile, json file and so on but not sure if there is a way to read a fixed-length file. I was searching the internet for this and found a github link, but I got to download &lt;PRE&gt;&lt;CODE&gt;spark-fixedwidth-assembly-1.0.jar&lt;/CODE&gt;&lt;/PRE&gt; for this purpose however I was unable to figure out the jar anywhere. I am completely lost here and need your suggestions and help. &lt;/P&gt;
&lt;P&gt;Here is the file &lt;/P&gt;
&lt;PRE&gt;&lt;CODE&gt;    56 apple     TRUE 0.56
    45 pear      FALSE1.34
    34 raspberry TRUE 2.43
    34 plum      TRUE 1.31
    53 cherry    TRUE 1.4 
    23 orange    FALSE2.34
    56 persimmon FALSE23.2 &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The fixed width of each columns are 3, 10, 5, 4 &lt;/P&gt;
&lt;P&gt;Please suggest your opinion. &lt;/P&gt; 
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Aug 2016 17:52:24 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29531#M21254</guid>
      <dc:creator>alexraj84</dc:creator>
      <dc:date>2016-08-04T17:52:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to read a fixed length file in Spark using DataFrame API and SCALA</title>
      <link>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29532#M21255</link>
      <description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I think you got the answer in stackoverflow&lt;/P&gt;
&lt;P&gt;&lt;A href="http://stackoverflow.com/questions/38773664/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and-scala" target="test_blank"&gt;http://stackoverflow.com/questions/38773664/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and-scala&lt;/A&gt;&lt;/P&gt; 
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Aug 2016 16:58:37 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29532#M21255</guid>
      <dc:creator>User16789201666</dc:creator>
      <dc:date>2016-08-05T16:58:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to read a fixed length file in Spark using DataFrame API and SCALA</title>
      <link>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29533#M21256</link>
      <description>&lt;P&gt;Find the below solution which can be used. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let us consider this is the data in the file. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EMP ID&amp;nbsp;&amp;nbsp;&amp;nbsp;First Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Last Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1Chris&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2John&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3Amit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EMP ID: starts at 1 to 10 characters &lt;/P&gt;&lt;P&gt;First Name: &amp;nbsp;starts at 11 to 25 characters&lt;/P&gt;&lt;P&gt;Last name: starts at 36 to 25 characters &lt;/P&gt;&lt;P&gt;DOB: starts at 61 to 30 characters. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Step 1: &lt;/B&gt;&lt;/P&gt;&lt;P&gt;Load the file into a dataframe with the below options, this will create a data frame with only one column and all rows: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;	DFSchema = "single_col string"&lt;/P&gt;&lt;P&gt;	Df = (spark.read&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.option("header",False)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.schema(DFSchema)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.csv(file_path)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Step 2:&lt;/B&gt;&lt;/P&gt;&lt;P&gt;Now the single column has to be broken into 3 columns. Follow the steps below &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Option 1: &lt;/B&gt;Create column by column manually&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Df = (Df.withColumn(“EMP_ID”, Df.single_col.substr(1,10))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.withColumn(“First Name”, Df.single_col.substr (11,25))&lt;/P&gt;&lt;P&gt;             .withColumn(“Last Name”, Df.single_col.substr(36,25))&lt;/P&gt;&lt;P&gt;         )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Option 2: &lt;/B&gt;Create columns pro-grammatically&lt;B&gt; &lt;/B&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Define the column length details: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Col_Details = [(‘EMP_ID’,(1,10),(‘ First Name’,(11,25)),(‘Last Name’,(36,25))]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Using loop separate the column programmatically:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for col_info in a:&lt;/P&gt;&lt;P&gt;&amp;nbsp;df = df.withColumn(col_info[0],DataFrameReader.value.substr(col_info[1][0],col_info[1][1]))&lt;/P&gt;</description>
      <pubDate>Fri, 29 Oct 2021 11:50:15 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-to-read-a-fixed-length-file-in-spark-using-dataframe-api-and/m-p/29533#M21256</guid>
      <dc:creator>Nagendra</dc:creator>
      <dc:date>2021-10-29T11:50:15Z</dc:date>
    </item>
  </channel>
</rss>

