<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-05-29
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20150529" />
    <meta http-equiv="Content-Language" content="en" />
    <title>AsterixDB - </title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />

      
    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                                  <a href=".././" id="bannerLeft">
                                                                                                <img src="../images/asterixlogo.png"  alt="AsterixDB"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://incubator.apache.org/" id="bannerRight">
                                                                                                <img src="../images/egg-logo.png"  alt="Apache Software Foundation Incubator"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2015-05-29</li>
                      
                
                    
                 <li id="projectVersion" class="pull-right">Version: 0.8.7-SNAPSHOT</li>
      
                                            <li class="divider pull-right">|</li>
                        
    <li class="pull-right">              <a href="../index.html" title="Home">
        Home</a>
  </li>

                        </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Apache Software Foundation</li>
                                
      <li>
    
                          <a href="http://www.apache.org/" class="externalLink" title="Home">
          <i class="none"></i>
        Home</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Donate">
          <i class="none"></i>
        Donate</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
                              <li class="nav-header">User Documentation</li>
                                
      <li>
    
                          <a href="../install.html" title="Installing and Managing AsterixDB using Managix">
          <i class="none"></i>
        Installing and Managing AsterixDB using Managix</a>
            </li>
                  
      <li>
    
                          <a href="../aql/primer.html" title="AsterixDB 101: An ADM and AQL Primer">
          <i class="none"></i>
        AsterixDB 101: An ADM and AQL Primer</a>
            </li>
                  
      <li>
    
                          <a href="../aql/primer-sql-like.html" title="AsterixDB 101: An ADM and AQL Primer (For SQL Fans)">
          <i class="none"></i>
        AsterixDB 101: An ADM and AQL Primer (For SQL Fans)</a>
            </li>
                  
      <li>
    
                          <a href="../aql/js-sdk.html" title="AsterixDB Javascript SDK">
          <i class="none"></i>
        AsterixDB Javascript SDK</a>
            </li>
                  
      <li>
    
                          <a href="../aql/datamodel.html" title="Asterix Data Model (ADM)">
          <i class="none"></i>
        Asterix Data Model (ADM)</a>
            </li>
                  
      <li>
    
                          <a href="../aql/manual.html" title="Asterix Query Language (AQL)">
          <i class="none"></i>
        Asterix Query Language (AQL)</a>
            </li>
                  
      <li>
    
                          <a href="../aql/functions.html" title="AQL Functions">
          <i class="none"></i>
        AQL Functions</a>
            </li>
                  
      <li>
    
                          <a href="../aql/allens.html" title="AQL Allen's Relations Functions">
          <i class="none"></i>
        AQL Allen's Relations Functions</a>
            </li>
                  
      <li>
    
                          <a href="../aql/similarity.html" title="AQL Support of Similarity Queries">
          <i class="none"></i>
        AQL Support of Similarity Queries</a>
            </li>
                  
      <li class="active">
    
            <a href="#"><i class="none"></i>Accessing External Data</a>
          </li>
                  
      <li>
    
                          <a href="../aql/filters.html" title="Filter-Based LSM Index Acceleration">
          <i class="none"></i>
        Filter-Based LSM Index Acceleration</a>
            </li>
                  
      <li>
    
                          <a href="../api.html" title="REST API to AsterixDB">
          <i class="none"></i>
        REST API to AsterixDB</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                                                                                                                         <a href=".././" title="Hyracks" class="builtBy">
        <img class="builtBy"  alt="Hyracks" src="../images/hyrax_ts.png"    />
      </a>
                      </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <h1>Accessing External Data in AsterixDB</h1>
<div class="section">
<h2><a name="toc" id="toc">Table of Contents</a><a name="Table_of_Contents"></a></h2>

<ul>
  
<li><a href="#Introduction">Introduction</a></li>
  
<li><a href="#IntroductionAdapterForAnExternalDataset">Adapter for an External Dataset</a></li>
  
<li><a href="#IntroductionCreatingAnExternalDataset">Creating an External Dataset</a></li>
  
<li><a href="#WritingQueriesAgainstAnExternalDataset">Writing Queries against an External Dataset</a></li>
</ul></div>
<div class="section">
<h2><a name="Introduction" id="Introduction">Introduction</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Introduction_Back_to_TOC"></a></h2>
<p>Data that needs to be processed by ASTERIX could be residing outside ASTERIX storage. Examples include data files on a distributed file system such as HDFS or on the local file system of a machine that is part of an ASTERIX cluster. For ASTERIX to process such data, end-user may create a regular dataset in ASTERIX (a.k.a. internal dataset) and load the dataset with the data. ASTERIX supports &#x2018;&#x2018;external datasets&#x2019;&#x2019; so that it is not necessary to &#x201c;load&#x201d; all data prior to using it. This also avoids creating multiple copies of data and the need to keep the copies in sync.</p>
<div class="section">
<h3><a name="IntroductionAdapterForAnExternalDataset" id="IntroductionAdapterForAnExternalDataset">Adapter for an External Dataset</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Adapter_for_an_External_Dataset_Back_to_TOC"></a></h3>
<p>External data is accessed using wrappers (adapters in ASTERIX) that abstract away the mechanism of connecting with an external service, receiving data and transforming the data into ADM records that are understood by ASTERIX. ASTERIX comes with built-in adapters for common storage systems such as HDFS or the local file system.</p></div>
<div class="section">
<h3><a name="IntroductionCreatingAnExternalDataset" id="IntroductionCreatingAnExternalDataset">Creating an External Dataset</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Creating_an_External_Dataset_Back_to_TOC"></a></h3>
<p>As an example we consider the Lineitem dataset from <a class="externalLink" href="http://www.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSTPCHLinkedData/tpch.sql">TPCH schema</a>.</p>
<p>We assume that you have successfully created an ASTERIX instance following the instructions at <a href="../install.html">Installing Asterix Using Managix</a>. <i>For constructing an example, we assume a single machine setup.</i></p>
<p>Similar to a regular dataset, an external dataset has an associated datatype. We shall first create the datatype associated with each record in Lineitem data. Paste the following in the query textbox on the webpage at <a class="externalLink" href="http://127.0.0.1:19001">http://127.0.0.1:19001</a> and hit &#x2018;Execute&#x2019;.</p>

<div class="source">
<pre>    create dataverse ExternalFileDemo;
    use dataverse ExternalFileDemo;

    create type LineitemType as closed {
      l_orderkey:int32,
      l_partkey: int32,
      l_suppkey: int32,
      l_linenumber: int32,
      l_quantity: double,
      l_extendedprice: double,
      l_discount: double,
      l_tax: double,
      l_returnflag: string,
      l_linestatus: string,
      l_shipdate: string,
      l_commitdate: string,
      l_receiptdate: string,
      l_shipinstruct: string,
      l_shipmode: string,
      l_comment: string}
</pre></div>
<p>We describe here two scenarios.</p>
<div class="section">
<h4>1) Data file resides on the local file system of a host<a name="a1_Data_file_resides_on_the_local_file_system_of_a_host"></a></h4>
<p>Prerequisite: The host is a part of the ASTERIX cluster.</p>
<p>Earlier, we assumed a single machine ASTERIX setup. To satisfy the prerequisite, log-in to the machine running ASTERIX.</p>

<ul>
  
<li>Download the <a class="externalLink" href="https://code.google.com/p/asterixdb/downloads/detail?name=lineitem.tbl&amp;can=2&amp;q=">data file</a> to an appropriate location. We denote this location by SOURCE_PATH.</li>
</ul>
<p>ASTERIX provides a built-in adapter for data residing on the local file system. The adapter is referred by its alias- &#x2018;localfs&#x2019;. We create an external dataset named Lineitem and use the &#x2018;localfs&#x2019; adapter.</p>

<div class="source">
<pre>    create external dataset Lineitem(LineitemType)
    using localfs
</pre></div>
<p>Above, the definition is not complete as we need to provide a set of parameters that are specific to the source file.</p>

<table border="0" class="table table-striped">

<tr class="a">
  
<td> Parameter </td>
  
<td> Description </td>
</tr>

<tr class="b">
  
<td> path </td>
  
<td> A fully qualified path of the form <tt>host://&lt;absolute path&gt;</tt>. 
  Use a comma separated list if there are multiple files. 
  E.g. <tt>host1://&lt;absolute path&gt;</tt>, <tt>host2://&lt;absolute path&gt;</tt> and so forth. </td>
</tr>

<tr class="a">
  
<td> format </td>
  
<td> The format for the content. Use 'adm' for data in ADM (ASTERIX Data Model) or <a class="externalLink" href="http://www.json.org/">JSON</a> format. Use 'delimited-text' if fields are separated by a delimiting character (eg., CSV). </td></tr>

<tr class="b">
<td>delimiter</td>
<td>The delimiting character in the source file if format is 'delimited text'</td></tr>
</table>
<p>As we are using a single single machine ASTERIX instance, we use 127.0.0.1 as host in the path parameter. We <i>complete the create dataset statement</i> as follows.</p>

<div class="source">
<pre>    use dataverse ExternalFileDemo;

    create external dataset Lineitem(LineitemType)
    using localfs
    ((&quot;path&quot;=&quot;127.0.0.1://SOURCE_PATH&quot;),
    (&quot;format&quot;=&quot;delimited-text&quot;),
    (&quot;delimiter&quot;=&quot;|&quot;));
</pre></div>
<p>Please substitute SOURCE_PATH with the absolute path to the source file on the local file system.</p></div>
<div class="section">
<h4>Common source of error<a name="Common_source_of_error"></a></h4>
<p>An incorrect value for the path parameter will give the following exception message when the dataset is used in a query.</p>

<div class="source">
<pre>    edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: edu.uci.ics.hyracks.api.exceptions.HyracksDataException: Job failed.
</pre></div>
<p>Verify the correctness of the path parameter provided to the localfs adapter. Note that the path parameter must be an absolute path to the data file. For e.g. if you saved your file in your home directory (assume it to be /home/joe), then the path value should be</p>

<div class="source">
<pre>    127.0.0.1:///home/joe/lineitem.tbl.
</pre></div>
<p>In your web-browser, navigate to 127.0.0.1:19001 and paste the above to the query text box. Finally hit &#x2018;Execute&#x2019;.</p>
<p>Next we move over to the the section <a href="#Writing_Queries_against_an_External_Dataset">Writing Queries against an External Dataset</a> and try a sample query against the external dataset.</p></div>
<div class="section">
<h4>2) Data file resides on an HDFS instance<a name="a2_Data_file_resides_on_an_HDFS_instance"></a></h4>
<p>Pre-requisite: It is required that the Namenode and atleast one of the HDFS Datanodes are reachable from the hosts that form the ASTERIX cluster. ASTERIX provides a built-in adapter for data residing on HDFS. The HDFS adapter is referred (in AQL) by its alias - &#x2018;hdfs&#x2019;. We create an external dataset named Lineitem and associate the HDFS adapter with it.</p>

<div class="source">
<pre>    create external dataset Lineitem(LineitemType)
    using hdfs
</pre></div>
<p>The above statement is <i>not complete</i> as we need to provide a set of parameters specific to the HDFS instance and the source file. These parameters are described below.</p>

<table border="0" class="table table-striped">

<tr class="a">
  
<td> Parameter </td>
  
<td> Description </td>
</tr>

<tr class="b">
  
<td> hdfs </td>
  
<td> The HDFS URL </td>
</tr>

<tr class="a">
  
<td> path </td>
  
<td> The absolute path to the source HDFS file. Use a comma separated list if there are multiple files. </td></tr>

<tr class="b">
  
<td> input-format </td>
  
<td> The associated input format. Use 'text-input-format' for textual data or 'sequence-input-format' for binary data (sequence files). </td>
</tr>

<tr class="a">
  
<td> format </td>
  
<td> The format for the content. Use 'adm' for data in ADM (ASTERIX Data Model) or 
  <a class="externalLink" href="http://www.json.org/">JSON</a> format and use 'delimited-text' for delimited data 
  that has fields separated by a delimiting character. </td>
</tr>

<tr class="b">
  
<td> delimiter </td>
  
<td> The delimiting character in the source file if format is 'delimited text' </td>
</tr>
</table>
<p><i>Difference between &#x2018;input-format&#x2019; and &#x2018;format&#x2019;</i></p>
<p><i>input-format</i>: File stored under HDFS have an associated storage format For example, TextInputFormat represents plain text files. SequenceFileInputFormat indicates binary compressed file. The parameter &#x2018;input-format&#x2019; is used to distinguish between these two kind of files.</p>
<p><i>format</i>: The parameter &#x2018;format&#x2019; refers to the type of the data contained in the file. For example data contained in a file could be in json, ADM format or could be delimited-text with fields separated by a delimiting character.</p>
<p>As an example. consider the <a class="externalLink" href="https://code.google.com/p/asterixdb/downloads/detail?name=lineitem.tbl&amp;can=2&amp;q=">data file</a>. The file is a text file with each line representing a record. The fields in each record are separated by the &#x2018;|&#x2019; character.</p>
<p>We assume the HDFS URL to be <a class="externalLink" href="hdfs://host:port">hdfs://host:port</a>. We further assume that the example data file is copied to the HDFS at a path denoted by HDFS_PATH.</p>
<p>The complete set of parameters for our example file are as follows. ((&#x201c;hdfs&#x201d;=&#x201c;HDFS_URL&#x201d;,(&#x201c;path&#x201d;=&#x201c;HDFS_PATH&#x201d;),(&#x201c;input-format&#x201d;=&#x201c;text-input-format&#x201d;),(&#x201c;format&#x201d;=&#x201c;delimited-text&#x201d;),(&#x201c;delimiter&#x201d;=&#x201c;|&#x201d;))</p>
<p>We modify the create external dataset statement as follows.</p>

<div class="source">
<pre>    create external dataset Lineitem('LineitemType)
    using hdfs
    ((&quot;hdfs&quot;=&quot;HDFS_URL&quot;),(&quot;path&quot;=&quot;HDFS_PATH&quot;),(&quot;input-format&quot;=&quot;text-input-format&quot;),(&quot;format&quot;=&quot;delimited-text&quot;),(&quot;delimiter&quot;=&quot;|&quot;));
</pre></div>
<p>Once you have copied the source data file to your HDFS instance, substitute the values of HDFS_URL and HDFS_PATH in the above statement. In your web-browser, navigate to <a class="externalLink" href="http://127.0.0.1:19001">http://127.0.0.1:19001</a> and execute the above statement with substituted values.</p>
<p>You may now run the sample query in next section.</p></div></div></div>
<div class="section">
<h2><a name="WritingQueriesAgainstAnExternalDataset" id="WritingQueriesAgainstAnExternalDataset">Writing Queries against an External Dataset</a> <font size="4"><a href="#toc">[Back to TOC]</a></font><a name="Writing_Queries_against_an_External_Dataset_Back_to_TOC"></a></h2>
<p>You may write AQL queries against an external dataset. Following is an example AQL query that applies a filter and returns an ordered result.</p>

<div class="source">
<pre>    use dataverse ExternalFileDemo;

    for $c in dataset('Lineitem')
    where $c.l_orderkey &lt;= 3
    order by $c.l_orderkey, $c.l_linenumber
    return $c
</pre></div>
<p>The expected result is:</p>

<div class="source">
<pre>    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 156, &quot;l_suppkey&quot;: 4, &quot;l_linenumber&quot;: 1, &quot;l_quantity&quot;: 17, &quot;l_extendedprice&quot;: 17954.55d, &quot;l_discount&quot;: 0.04d, &quot;l_tax&quot;: 0.02d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-03-13&quot;, &quot;l_commitdate&quot;: &quot;1996-02-12&quot;, &quot;l_receiptdate&quot;: &quot;1996-03-22&quot;, &quot;l_shipinstruct&quot;: &quot;DELIVER IN PERSON&quot;, &quot;l_shipmode&quot;: &quot;TRUCK&quot;, &quot;l_comment&quot;: &quot;egular courts above the&quot; }
    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 68, &quot;l_suppkey&quot;: 9, &quot;l_linenumber&quot;: 2, &quot;l_quantity&quot;: 36, &quot;l_extendedprice&quot;: 34850.16d, &quot;l_discount&quot;: 0.09d, &quot;l_tax&quot;: 0.06d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-04-12&quot;, &quot;l_commitdate&quot;: &quot;1996-02-28&quot;, &quot;l_receiptdate&quot;: &quot;1996-04-20&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;MAIL&quot;, &quot;l_comment&quot;: &quot;ly final dependencies: slyly bold &quot; }
    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 64, &quot;l_suppkey&quot;: 5, &quot;l_linenumber&quot;: 3, &quot;l_quantity&quot;: 8, &quot;l_extendedprice&quot;: 7712.48d, &quot;l_discount&quot;: 0.1d, &quot;l_tax&quot;: 0.02d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-01-29&quot;, &quot;l_commitdate&quot;: &quot;1996-03-05&quot;, &quot;l_receiptdate&quot;: &quot;1996-01-31&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;REG AIR&quot;, &quot;l_comment&quot;: &quot;riously. regular, express dep&quot; }
    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 3, &quot;l_suppkey&quot;: 6, &quot;l_linenumber&quot;: 4, &quot;l_quantity&quot;: 28, &quot;l_extendedprice&quot;: 25284.0d, &quot;l_discount&quot;: 0.09d, &quot;l_tax&quot;: 0.06d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-04-21&quot;, &quot;l_commitdate&quot;: &quot;1996-03-30&quot;, &quot;l_receiptdate&quot;: &quot;1996-05-16&quot;, &quot;l_shipinstruct&quot;: &quot;NONE&quot;, &quot;l_shipmode&quot;: &quot;AIR&quot;, &quot;l_comment&quot;: &quot;lites. fluffily even de&quot; }
    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 25, &quot;l_suppkey&quot;: 8, &quot;l_linenumber&quot;: 5, &quot;l_quantity&quot;: 24, &quot;l_extendedprice&quot;: 22200.48d, &quot;l_discount&quot;: 0.1d, &quot;l_tax&quot;: 0.04d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-03-30&quot;, &quot;l_commitdate&quot;: &quot;1996-03-14&quot;, &quot;l_receiptdate&quot;: &quot;1996-04-01&quot;, &quot;l_shipinstruct&quot;: &quot;NONE&quot;, &quot;l_shipmode&quot;: &quot;FOB&quot;, &quot;l_comment&quot;: &quot; pending foxes. slyly re&quot; }
    { &quot;l_orderkey&quot;: 1, &quot;l_partkey&quot;: 16, &quot;l_suppkey&quot;: 3, &quot;l_linenumber&quot;: 6, &quot;l_quantity&quot;: 32, &quot;l_extendedprice&quot;: 29312.32d, &quot;l_discount&quot;: 0.07d, &quot;l_tax&quot;: 0.02d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1996-01-30&quot;, &quot;l_commitdate&quot;: &quot;1996-02-07&quot;, &quot;l_receiptdate&quot;: &quot;1996-02-03&quot;, &quot;l_shipinstruct&quot;: &quot;DELIVER IN PERSON&quot;, &quot;l_shipmode&quot;: &quot;MAIL&quot;, &quot;l_comment&quot;: &quot;arefully slyly ex&quot; }
    { &quot;l_orderkey&quot;: 2, &quot;l_partkey&quot;: 107, &quot;l_suppkey&quot;: 2, &quot;l_linenumber&quot;: 1, &quot;l_quantity&quot;: 38, &quot;l_extendedprice&quot;: 38269.8d, &quot;l_discount&quot;: 0.0d, &quot;l_tax&quot;: 0.05d, &quot;l_returnflag&quot;: &quot;N&quot;, &quot;l_linestatus&quot;: &quot;O&quot;, &quot;l_shipdate&quot;: &quot;1997-01-28&quot;, &quot;l_commitdate&quot;: &quot;1997-01-14&quot;, &quot;l_receiptdate&quot;: &quot;1997-02-02&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;RAIL&quot;, &quot;l_comment&quot;: &quot;ven requests. deposits breach a&quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 5, &quot;l_suppkey&quot;: 2, &quot;l_linenumber&quot;: 1, &quot;l_quantity&quot;: 45, &quot;l_extendedprice&quot;: 40725.0d, &quot;l_discount&quot;: 0.06d, &quot;l_tax&quot;: 0.0d, &quot;l_returnflag&quot;: &quot;R&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1994-02-02&quot;, &quot;l_commitdate&quot;: &quot;1994-01-04&quot;, &quot;l_receiptdate&quot;: &quot;1994-02-23&quot;, &quot;l_shipinstruct&quot;: &quot;NONE&quot;, &quot;l_shipmode&quot;: &quot;AIR&quot;, &quot;l_comment&quot;: &quot;ongside of the furiously brave acco&quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 20, &quot;l_suppkey&quot;: 10, &quot;l_linenumber&quot;: 2, &quot;l_quantity&quot;: 49, &quot;l_extendedprice&quot;: 45080.98d, &quot;l_discount&quot;: 0.1d, &quot;l_tax&quot;: 0.0d, &quot;l_returnflag&quot;: &quot;R&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1993-11-09&quot;, &quot;l_commitdate&quot;: &quot;1993-12-20&quot;, &quot;l_receiptdate&quot;: &quot;1993-11-24&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;RAIL&quot;, &quot;l_comment&quot;: &quot; unusual accounts. eve&quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 129, &quot;l_suppkey&quot;: 8, &quot;l_linenumber&quot;: 3, &quot;l_quantity&quot;: 27, &quot;l_extendedprice&quot;: 27786.24d, &quot;l_discount&quot;: 0.06d, &quot;l_tax&quot;: 0.07d, &quot;l_returnflag&quot;: &quot;A&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1994-01-16&quot;, &quot;l_commitdate&quot;: &quot;1993-11-22&quot;, &quot;l_receiptdate&quot;: &quot;1994-01-23&quot;, &quot;l_shipinstruct&quot;: &quot;DELIVER IN PERSON&quot;, &quot;l_shipmode&quot;: &quot;SHIP&quot;, &quot;l_comment&quot;: &quot;nal foxes wake. &quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 30, &quot;l_suppkey&quot;: 5, &quot;l_linenumber&quot;: 4, &quot;l_quantity&quot;: 2, &quot;l_extendedprice&quot;: 1860.06d, &quot;l_discount&quot;: 0.01d, &quot;l_tax&quot;: 0.06d, &quot;l_returnflag&quot;: &quot;A&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1993-12-04&quot;, &quot;l_commitdate&quot;: &quot;1994-01-07&quot;, &quot;l_receiptdate&quot;: &quot;1994-01-01&quot;, &quot;l_shipinstruct&quot;: &quot;NONE&quot;, &quot;l_shipmode&quot;: &quot;TRUCK&quot;, &quot;l_comment&quot;: &quot;y. fluffily pending d&quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 184, &quot;l_suppkey&quot;: 5, &quot;l_linenumber&quot;: 5, &quot;l_quantity&quot;: 28, &quot;l_extendedprice&quot;: 30357.04d, &quot;l_discount&quot;: 0.04d, &quot;l_tax&quot;: 0.0d, &quot;l_returnflag&quot;: &quot;R&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1993-12-14&quot;, &quot;l_commitdate&quot;: &quot;1994-01-10&quot;, &quot;l_receiptdate&quot;: &quot;1994-01-01&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;FOB&quot;, &quot;l_comment&quot;: &quot;ages nag slyly pending&quot; }
    { &quot;l_orderkey&quot;: 3, &quot;l_partkey&quot;: 63, &quot;l_suppkey&quot;: 8, &quot;l_linenumber&quot;: 6, &quot;l_quantity&quot;: 26, &quot;l_extendedprice&quot;: 25039.56d, &quot;l_discount&quot;: 0.1d, &quot;l_tax&quot;: 0.02d, &quot;l_returnflag&quot;: &quot;A&quot;, &quot;l_linestatus&quot;: &quot;F&quot;, &quot;l_shipdate&quot;: &quot;1993-10-29&quot;, &quot;l_commitdate&quot;: &quot;1993-12-18&quot;, &quot;l_receiptdate&quot;: &quot;1993-11-04&quot;, &quot;l_shipinstruct&quot;: &quot;TAKE BACK RETURN&quot;, &quot;l_shipmode&quot;: &quot;RAIL&quot;, &quot;l_comment&quot;: &quot;ges sleep after the caref&quot; }
</pre></div></div>
                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                   2015.
          All Rights Reserved.      
                    
      </div>

                                                                  <?xml version="1.0" encoding="UTF-8"?>
<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
        feather logo, and the Apache AsterixDB project logo are either
        registered trademarks or trademarks of The Apache Software
        Foundation in the United States and other countries.
        All other marks mentioned may be trademarks or registered
        trademarks of their respective owners.</div>
                  
        
                </div>
    </footer>
  </body>
</html>
