forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Su, Xiaomeng <suxiaomeng1@huawei.com> Co-committed-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
368 lines
51 KiB
HTML
368 lines
51 KiB
HTML
<a name="dli_08_0077"></a><a name="dli_08_0077"></a>
|
|
|
|
<h1 class="topictitle1">Creating an OBS Table Using the Hive Syntax</h1>
|
|
<div id="body8662426"><div class="section" id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_se8384cdf8b0a46c1aabc005a85c4ec0a"><h4 class="sectiontitle">Function</h4><p id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_p26079824124130">This statement is used to create an OBS table using the Hive syntax. The main differences between the DataSource and the Hive syntax lie in the supported data formats and the number of supported partitions. For details, see syntax and precautions.</p>
|
|
<div class="note" id="dli_08_0077__note2901719181211"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="dli_08_0077__p1990121912128">You are advised to use the OBS parallel file system for storage. A parallel file system is a high-performance file system that provides latency in milliseconds, TB/s-level bandwidth, and millions of IOPS. It applies to interactive big data analysis scenarios.</p>
|
|
</div></div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section471444971619"><h4 class="sectiontitle">Precautions</h4><ul id="dli_08_0077__ul9531201710213"><li id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_li17531111719217">The size of a table is calculated when the table is created.</li><li id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_li280847182315">When data is added, the table size will not be changed.</li><li id="dli_08_0077__li06631921145718">You can check the table size on OBS.</li><li id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_li25313179210">Table properties cannot be specified using CTAS table creation statements.</li><li id="dli_08_0077__li173575713551"><strong id="dli_08_0077__b109498940693754">Instructions on using partitioned tables:</strong><ul id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0093946792_ua8a2d573dd514bf5be3d34e03ed365c5"><li id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0093946792_li47893176101914">When you create a partitioned table, ensure that the specified column in <strong id="dli_08_0077__b156362414415">PARTITIONED BY</strong> is not a column in the table and the data type is specified. The partition column supports only the open-source Hive table types including <strong id="dli_08_0077__b08051447442">string</strong>, <strong id="dli_08_0077__b1180517471947">boolean</strong>, <strong id="dli_08_0077__b1180515476411">tinyint</strong>, <strong id="dli_08_0077__b2805047046">smallint</strong>, <strong id="dli_08_0077__b78063471146">short</strong>, <strong id="dli_08_0077__b1580614473415">int</strong>, <strong id="dli_08_0077__b118060477415">bigint</strong>, <strong id="dli_08_0077__b1680664717411">long</strong>, <strong id="dli_08_0077__b178061247341">decimal</strong>, <strong id="dli_08_0077__b1880754720416">float</strong>, <strong id="dli_08_0077__b88070472413">double</strong>, <strong id="dli_08_0077__b68077477413">date</strong>, and <strong id="dli_08_0077__b1680715471045">timestamp</strong>.</li><li id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_li87213195420">Multiple partition fields can be specified. The partition fields need to be specified after the <strong id="dli_08_0077__b498312491414">PARTITIONED BY</strong> keyword, instead of the table name. Otherwise, an error occurs.</li><li id="dli_08_0077__li779941410571">A maximum of 200,000 partitions can be created in a single table.</li><li id="dli_08_0077__li28731941124715">CTAS table creation statements cannot be used to create partitioned tables.</li></ul>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_s4069747e5e64491792b47f9b76109fb9"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="dli_08_0077__en-us_topic_0114776171_screen1132183914186"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="p">[</span><span class="k">EXTERNAL</span><span class="p">]</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="p">[</span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="n">db_name</span><span class="p">.]</span><span class="k">table_name</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="p">[(</span><span class="n">col_name1</span><span class="w"> </span><span class="n">col_type1</span><span class="w"> </span><span class="p">[</span><span class="k">COMMENT</span><span class="w"> </span><span class="n">col_comment1</span><span class="p">],</span><span class="w"> </span><span class="p">...)]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="k">COMMENT</span><span class="w"> </span><span class="n">table_comment</span><span class="p">]</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="p">[</span><span class="n">PARTITIONED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span><span class="n">col_name2</span><span class="w"> </span><span class="n">col_type2</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="k">COMMENT</span><span class="w"> </span><span class="n">col_comment2</span><span class="p">],</span><span class="w"> </span><span class="p">...)]</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="p">[</span><span class="k">ROW</span><span class="w"> </span><span class="n">FORMAT</span><span class="w"> </span><span class="n">row_format</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">file_format</span><span class="p">]</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs_path'</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="n">TBLPROPERTIES</span><span class="w"> </span><span class="p">(</span><span class="k">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">)]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="k">AS</span><span class="w"> </span><span class="n">select_statement</span><span class="p">]</span>
|
|
<span class="n">row_format</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">SERDE</span><span class="w"> </span><span class="n">serde_cls</span><span class="w"> </span><span class="p">[</span><span class="k">WITH</span><span class="w"> </span><span class="n">SERDEPROPERTIES</span><span class="w"> </span><span class="p">(</span><span class="n">key1</span><span class="o">=</span><span class="n">val1</span><span class="p">,</span><span class="w"> </span><span class="n">key2</span><span class="o">=</span><span class="n">val2</span><span class="p">,</span><span class="w"> </span><span class="p">...)]</span>
|
|
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">DELIMITED</span><span class="w"> </span><span class="p">[</span><span class="n">FIELDS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="nb">char</span><span class="w"> </span><span class="p">[</span><span class="n">ESCAPED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="nb">char</span><span class="p">]]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="n">COLLECTION</span><span class="w"> </span><span class="n">ITEMS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="nb">char</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="k">MAP</span><span class="w"> </span><span class="n">KEYS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="nb">char</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="n">LINES</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="nb">char</span><span class="p">]</span>
|
|
<span class="w"> </span><span class="p">[</span><span class="k">NULL</span><span class="w"> </span><span class="k">DEFINED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="nb">char</span><span class="p">]</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_s3805b86231dd4c41b26864162d6c4ed5"><h4 class="sectiontitle">Keywords</h4><ul id="dli_08_0077__en-us_topic_0114776171_ul74261946687"><li id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_l4409cf7808da45c6abd51a1e32c0b909">EXTERNAL: Creates an OBS table.</li><li id="dli_08_0077__en-us_topic_0114776171_li12814539191914">IF NOT EXISTS: Prevents system errors when the created table exists.</li><li id="dli_08_0077__en-us_topic_0114776171_li11143171444414">COMMENT: Field or table description.</li><li id="dli_08_0077__en-us_topic_0114776171_li572161314209">PARTITIONED BY: Partition field.</li><li id="dli_08_0077__li1761110581424">ROW FORMAT: Row data format.</li><li id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_l2b4d833ae66e470dae553c300f0783b8">STORED AS: Specifies the format of the file to be stored. Currently, only the TEXTFILE, AVRO, ORC, SEQUENCEFILE, RCFILE, and PARQUET format are supported.</li><li id="dli_08_0077__en-us_topic_0114776171_en-us_topic_0093946792_le38d766b4f094c178071c05b9717391f">LOCATION: Specifies the path of OBS. This keyword is mandatory when you create OBS tables.</li><li id="dli_08_0077__li6331130191815">TBLPROPERTIES: Allows you to add the <strong id="dli_08_0077__b1550212295461">key/value</strong> properties to a table.<ul id="dli_08_0077__ul1611116494185"><li id="dli_08_0077__li7473164411185">You can use this statement to enable the multiversion function to back up and restore table data. After the multiversion function is enabled, the system automatically backs up table data when you delete or modify the data using <strong id="dli_08_0077__b17731842484">insert overwrite</strong> or <strong id="dli_08_0077__b18773204194816">truncate</strong>, and retains the data for a certain period. You can quickly restore data within the retention period. For details about the SQL syntax for the multiversion function, see <a href="dli_08_0354.html">Enabling or Disabling Multiversion Backup</a> and <a href="dli_08_0349.html">Backing Up and Restoring Data of Multiple Versions</a>.<p id="dli_08_0077__p1882095415365">When creating an OBS table, you can use <strong id="dli_08_0077__b12439113516404">TBLPROPERTIES ("dli.multi.version.enable"="true")</strong> to enable multiversion. For details, see the following example.</p>
|
|
|
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0077__table2861727205115" frame="border" border="1" rules="all"><caption><b>Table 1 </b>TBLPROPERTIES parameters</caption><thead align="left"><tr id="dli_08_0077__row2862827195111"><th align="left" class="cellrowborder" valign="top" width="32.35%" id="mcps1.3.4.2.8.2.1.6.2.3.1.1"><p id="dli_08_0077__p1686272745115">Key</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="67.65%" id="mcps1.3.4.2.8.2.1.6.2.3.1.2"><p id="dli_08_0077__p986252765113">Value</p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="dli_08_0077__row17862727205110"><td class="cellrowborder" valign="top" width="32.35%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.1 "><p id="dli_08_0077__p18862102711514">dli.multi.version.enable</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="67.65%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.2 "><ul id="dli_08_0077__ul1436093835210"><li id="dli_08_0077__li736012389523"><strong id="dli_08_0077__b068693704616">true</strong>: Enable the multiversion backup function.</li><li id="dli_08_0077__li6425840145215"><strong id="dli_08_0077__b548964119464">false</strong>: Disable the multiversion backup function.</li></ul>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__row108624274518"><td class="cellrowborder" valign="top" width="32.35%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.1 "><p id="dli_08_0077__p1786212710512">comment</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="67.65%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.2 "><p id="dli_08_0077__p386292795112">Description of the table</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__row11862927135113"><td class="cellrowborder" valign="top" width="32.35%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.1 "><p id="dli_08_0077__p14862727155118">orc.compress</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="67.65%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.2 "><p id="dli_08_0077__p1862162755111">An attribute of the ORC table, which specifies the compression mode of the ORC storage. Available values are as follows:</p>
|
|
<ul id="dli_08_0077__ul1081155119547"><li id="dli_08_0077__li1381165119543"><strong id="dli_08_0077__b73320109210">ZLIB</strong></li><li id="dli_08_0077__li1019517593540"><strong id="dli_08_0077__b921518113215">SNAPPY</strong></li><li id="dli_08_0077__li169561561557"><strong id="dli_08_0077__b31280121216">NONE</strong></li><li id="dli_08_0077__li167814514228">PARQUET </li></ul>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__row205532432005"><td class="cellrowborder" valign="top" width="32.35%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.1 "><p id="dli_08_0077__p1655313431504">auto.purge</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="67.65%" headers="mcps1.3.4.2.8.2.1.6.2.3.1.2 "><p id="dli_08_0077__p1355484319013">If this parameter is set to <strong id="dli_08_0077__b181725946">true</strong>, the deleted or overwritten data is removed and will not be dumped to the recycle bin.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</li></ul>
|
|
</li><li id="dli_08_0077__en-us_topic_0114776171_li739819389205">AS: You can run the CREATE TABLE AS statement to create a table.</li></ul>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_section53672061795"><h4 class="sectiontitle">Parameters</h4>
|
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_table147631250101111" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Parameters</caption><thead align="left"><tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row17564232219"><th align="left" class="cellrowborder" valign="top" width="24.75%" id="mcps1.3.5.2.2.4.1.1"><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p3756152318220"><strong id="dli_08_0077__b35449489393928">Parameter</strong></p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="10.51%" id="mcps1.3.5.2.2.4.1.2"><p id="dli_08_0077__p1838381253217"><strong id="dli_08_0077__b20339355393932">Mandatory</strong></p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="64.74%" id="mcps1.3.5.2.2.4.1.3"><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p167561023629"><strong id="dli_08_0077__b182467431793935">Description</strong></p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row1375611231219"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p107564232216">db_name</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p9383612103219">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__p12584132334910">Database name</p>
|
|
<p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1575614231121">The value can contain letters, numbers, and underscores (_), but it cannot contain only numbers or start with a number or underscore (_).</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row14757152312217"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1375610239211">table_name</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p15709174523">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__p1512287497">Table name in the database</p>
|
|
<p id="dli_08_0077__p16745144018498">The value can contain letters, numbers, and underscores (_), but it cannot contain only numbers or start with a number or underscore (_). The matching rule is <strong id="dli_08_0077__b68084675394317">^(?!_)(?![0-9]+$)[A-Za-z0-9_$]*$</strong>.</p>
|
|
<p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1275619237212">Special characters must be enclosed in single quotation marks ('').</p>
|
|
<p id="dli_08_0077__p1628084916492">The table name is case insensitive.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row1275719231525"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1875782313210">col_name</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p8701417135216">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p27571023024">Name of a column field</p>
|
|
<p id="dli_08_0077__dli_08_0076_en-us_topic_0114776170_p27571023024">The column field can contain letters, numbers, and underscores (_), but it cannot contain only numbers and must contain at least one letter.</p>
|
|
<p id="dli_08_0077__p1236220301333">The column name is case insensitive.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row1075772316216"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1875719238211">col_type</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p147018173522">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p197578239211">Data type of a column field, which is primitive.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row117571623729"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p87577239219">col_comment</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p19701217105220">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__dli_08_0076_en-us_topic_0114776170_p675715235211">Column field description, which can only be string constants.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_row172271441184311"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p82281641104318">row_format</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p1270117125218">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p72284418433">Row data format This function is available only for textfile tables.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row1775713231524"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p2075713231020">file_format</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p1570171715210">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p49323133119">OBS table storage format, which can be <strong id="dli_08_0077__b11166153451018">TEXTFILE</strong>, <strong id="dli_08_0077__b12694136191016">AVRO</strong>, <strong id="dli_08_0077__b1368739201011">ORC</strong>, <strong id="dli_08_0077__b12383114061015">SEQUENCEFILE</strong>, <strong id="dli_08_0077__b1970104214105">RCFILE</strong>, or <strong id="dli_08_0077__b1380145116103">PARQUET</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row551265517465"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p441312774716">table_comment</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p167051775219">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p1741310794711">Table description, which can only be string constants.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_row15817173804613"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p9817938194610">obs_path</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p87011711528">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__dli_08_0076_p15181825787">OBS storage path where data files are stored. You are advised to use an OBS parallel file system for storage.</p>
|
|
<p id="dli_08_0077__dli_08_0076_p798856103911">Format: <strong id="dli_08_0077__b1870413910115">obs://bucketName/tblPath</strong></p>
|
|
<p id="dli_08_0077__dli_08_0076_p1558471313431"><em id="dli_08_0077__i7425114111117">bucketName</em>: bucket name</p>
|
|
<p id="dli_08_0077__dli_08_0076_p16877248134212"><em id="dli_08_0077__i1574161815110">tblPath</em>: directory name. You do not need to specify the file name following the directory.</p>
|
|
<p id="dli_08_0077__p187561410193514">If there is a folder and a file with the same name in the OBS directory, the path pointed to by the OBS table will prioritize the file over the folder.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_row884951320375"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p148499132374">key = value</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p57031755214">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p0850713163711">Set table properties and values.</p>
|
|
<p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_p1563504112383">For example, if you want to enable multiversion, you can set <strong id="dli_08_0077__b73441668437">"dli.multi.version.enable"="true"</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_row258016494275"><td class="cellrowborder" valign="top" width="24.75%" headers="mcps1.3.5.2.2.4.1.1 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p55824491274">select_statement</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="10.51%" headers="mcps1.3.5.2.2.4.1.2 "><p id="dli_08_0077__p27011719527">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="64.74%" headers="mcps1.3.5.2.2.4.1.3 "><p id="dli_08_0077__en-us_topic_0241764532_dli_08_0077_en-us_topic_0114776171_en-us_topic_0114776170_p105821649182719">Used in the <strong id="dli_08_0077__b271511396111043">CREATE TABLE AS</strong> statement to insert the <strong id="dli_08_0077__b989013449111043">SELECT</strong> query results of the source table or a data record to a table newly created in the OBS bucket.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section139223276592"><a name="dli_08_0077__section139223276592"></a><a name="section139223276592"></a><h4 class="sectiontitle">Example 1: Creating an OBS Non-Partitioned Table</h4><p id="dli_08_0077__p1021316360015">Example description: Create an OBS non-partitioned table named <strong id="dli_08_0077__b1590484518209">table1</strong> and use the <strong id="dli_08_0077__b10904545172017">STORED AS</strong> keyword to set the storage format of the table to <strong id="dli_08_0077__b109040453209">orc</strong>.</p>
|
|
<p id="dli_08_0077__p62114310163">In practice, you can store OBS tables in <strong id="dli_08_0077__b10508826172113">textfile</strong>, <strong id="dli_08_0077__b821714280211">avro</strong>, <strong id="dli_08_0077__b5821730172111">orc</strong>, <strong id="dli_08_0077__b114045310217">sequencefile</strong>, <strong id="dli_08_0077__b513463314219">rcfile</strong>, or <strong id="dli_08_0077__b922973518219">parquet</strong> format.</p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen185181211212"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">col_1</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_2</span><span class="w"> </span><span class="nb">INT</span>
|
|
<span class="p">)</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">orc</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section288243544316"><h4 class="sectiontitle">Example 2: Creating an OBS Partitioned Table</h4><p id="dli_08_0077__p287518264445">Example description: Create a partitioned table named <strong id="dli_08_0077__b29121369224">student</strong>, which is partitioned using <strong id="dli_08_0077__b757474820225">facultyNo</strong> and <strong id="dli_08_0077__b166734530226">classNo</strong>.</p>
|
|
<div class="p" id="dli_08_0077__p387420166445">In practice, you can select a proper partitioning field and add it to the end of the <strong id="dli_08_0077__b19934183519287">PARTITIONED BY</strong> keyword.<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen166364584414"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">student</span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="n">STRING</span>
|
|
<span class="p">)</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">avro</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span>
|
|
<span class="n">PARTITIONED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">facultyNo</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">classNo</span><span class="w"> </span><span class="nb">INT</span>
|
|
<span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section17654112105220"><h4 class="sectiontitle">Example 3: Using CTAS to Create an OBS Table Using All or Part of the Data in the Source Table</h4><p id="dli_08_0077__p19201175614">Example description: Based on the OBS table <strong id="dli_08_0077__b0104112272914">table1</strong> created in <a href="#dli_08_0077__section139223276592">Example 1: Creating an OBS Non-Partitioned Table</a>, use the CTAS syntax to copy data from <strong id="dli_08_0077__b9105172216298">table1</strong> to <strong id="dli_08_0077__b3105722122914">table1_ctas</strong>.</p>
|
|
<p id="dli_08_0077__p776612190912">When using CTAS to create a table, you can ignore the syntax used to create the table being copied. This means that regardless of the syntax used to create <strong id="dli_08_0077__b7378055493653">table1</strong>, you can use the DataSource syntax to create <strong id="dli_08_0077__b31972142193653">table1_ctas</strong>.</p>
|
|
<p id="dli_08_0077__p135011644081">In addition, in this example, the storage format of <strong id="dli_08_0077__b117276343298">table1</strong> is <strong id="dli_08_0077__b1272713472915">orc</strong>, and the storage format of <strong id="dli_08_0077__b16727334132917">table1_ctas</strong> may be <strong id="dli_08_0077__b8599434123018">sequencefile</strong> or <strong id="dli_08_0077__b157285341295">parquet</strong>. This means that the storage format of the table created by CTAS may be different from that of the original table.</p>
|
|
<p id="dli_08_0077__p1029322414589">Use the <strong id="dli_08_0077__b43896682294729">SELECT</strong> statement following the <strong id="dli_08_0077__b203769975894729">AS</strong> keyword to select required data and insert the data to <strong id="dli_08_0077__b45839734094729">table1_ctas</strong>.</p>
|
|
<p id="dli_08_0077__p184204104544">The <strong id="dli_08_0077__b100182722794829">SELECT</strong> syntax is as follows: <strong id="dli_08_0077__b204287761794829">SELECT <</strong><em id="dli_08_0077__i30371136594829">Column name</em><strong id="dli_08_0077__b106435942894829"> > FROM <</strong><em id="dli_08_0077__i82341683494829">Table name</em><strong id="dli_08_0077__b145158727994829"> > WHERE <</strong><em id="dli_08_0077__i38556440694829">Related filter criteria</em><strong id="dli_08_0077__b78866709994829">></strong>.</p>
|
|
<ul id="dli_08_0077__ul143001810811"><li id="dli_08_0077__li183001109118">In this example, <strong id="dli_08_0077__b115623847394912">SELECT * FROM table1</strong> is used. <strong id="dli_08_0077__b99701187094912">*</strong> indicates that all columns are selected from <strong id="dli_08_0077__b88539231494912">table1</strong> and all data in <strong id="dli_08_0077__b44861785294912">table1</strong> is inserted into <strong id="dli_08_0077__b14478647094912">table1_ctas</strong>.<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen133742268101"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">table1_ctas</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">sequencefile</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span>
|
|
<span class="k">AS</span>
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="o">*</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">table1</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li><li id="dli_08_0077__li88207208112">To filter and insert data into <strong id="dli_08_0077__b15650893079549">table1_ctas</strong> in a customized way, you can use the following <strong id="dli_08_0077__b8679025439549">SELECT</strong> statement: <strong id="dli_08_0077__b4990896119549">SELECT col_1 FROM table1 WHERE col_1 = 'Ann'</strong>. This will allow you to select only <strong id="dli_08_0077__b3880153259549">col_1</strong> from <strong id="dli_08_0077__b9568369549">table1</strong> and insert data into <strong id="dli_08_0077__b17949851429549">table1_ctas</strong> where the value equals <strong id="dli_08_0077__b1869867469549">'Ann'</strong>.<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen1825923319119"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span>
|
|
<span class="normal">6</span>
|
|
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">table1_ctas</span>
|
|
<span class="k">USING</span><span class="w"> </span><span class="n">parquet</span>
|
|
<span class="k">OPTIONS</span><span class="w"> </span><span class="p">(</span><span class="n">path</span><span class="w"> </span><span class="s1">'obs:// bucketName/filePath'</span><span class="p">)</span>
|
|
<span class="k">AS</span>
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="n">col_1</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">table1</span>
|
|
<span class="k">WHERE</span><span class="w"> </span><span class="n">col_1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Ann'</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</li></ul>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section675283719111"><h4 class="sectiontitle">Example 4: Creating an OBS Non-Partitioned Table and Customizing the Data Type of a Column Field</h4><p id="dli_08_0077__p168826548311">Example description: Create an OBS non-partitioned table named <strong id="dli_08_0077__b127971643895631">table2</strong>. You can customize the native data types of column fields based on service requirements.</p>
|
|
<ul id="dli_08_0077__ul10265111414415"><li id="dli_08_0077__li926512141646"><strong id="dli_08_0077__b10018659609573">STRING</strong>, <strong id="dli_08_0077__b13509223059573">CHAR</strong>, or <strong id="dli_08_0077__b2915969059573">VARCHAR</strong> can be used for text characters.</li><li id="dli_08_0077__li1126531412420"><strong id="dli_08_0077__b149930464295852">TIMESTAMP</strong> or <strong id="dli_08_0077__b23871098695852">DATE</strong> can be used for time characters.</li><li id="dli_08_0077__li19265514646"><strong id="dli_08_0077__b171050953795923">INT</strong>, <strong id="dli_08_0077__b99090242895923">SMALLINT/SHORT</strong>, <strong id="dli_08_0077__b7182296895923">BIGINT/LONG</strong>, or <strong id="dli_08_0077__b183713399695923">TINYINT</strong> can be used for integer characters.</li><li id="dli_08_0077__li17265171414419"><strong id="dli_08_0077__b42710037295938">FLOAT</strong>, <strong id="dli_08_0077__b210513030395938">DOUBLE</strong>, or <strong id="dli_08_0077__b166636082795938">DECIMAL</strong> can be used for decimal calculation.</li><li id="dli_08_0077__li126519141646"><strong id="dli_08_0077__b19212873901011">BOOLEAN</strong> can be used if only logical switches are involved.</li></ul>
|
|
<p id="dli_08_0077__p117310234312">For details, see "Data Types" > "Primitive Data Types".</p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen177818151356"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">table2</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">col_01</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_02</span><span class="w"> </span><span class="nb">CHAR</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
|
|
<span class="w"> </span><span class="n">col_03</span><span class="w"> </span><span class="nb">VARCHAR</span><span class="w"> </span><span class="p">(</span><span class="mi">32</span><span class="p">),</span>
|
|
<span class="w"> </span><span class="n">col_04</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_05</span><span class="w"> </span><span class="nb">DATE</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_06</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_07</span><span class="w"> </span><span class="nb">SMALLINT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_08</span><span class="w"> </span><span class="nb">BIGINT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_09</span><span class="w"> </span><span class="n">TINYINT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_10</span><span class="w"> </span><span class="nb">FLOAT</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_11</span><span class="w"> </span><span class="n">DOUBLE</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_12</span><span class="w"> </span><span class="nb">DECIMAL</span><span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">),</span>
|
|
<span class="w"> </span><span class="n">col_13</span><span class="w"> </span><span class="nb">BOOLEAN</span>
|
|
<span class="p">)</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">parquet</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section9184929957"><h4 class="sectiontitle">Example 5: Creating an OBS Partitioned Table and Customizing TBLPROPERTIES Parameters</h4><p id="dli_08_0077__p195179383233">Example description: Create an OBS partitioned table named <strong id="dli_08_0077__b2047531613119">table3</strong> and partition the table based on <strong id="dli_08_0077__b1057402093120">col_3</strong>. Set <strong id="dli_08_0077__b996061313210">dli.multi.version.enable</strong>, <strong id="dli_08_0077__b1942101514320">comment</strong>, <strong id="dli_08_0077__b1552912163214">orc.compress</strong>, and <strong id="dli_08_0077__b278123043211">auto.purge</strong> in <strong id="dli_08_0077__b1651311327321">TBLPROPERTIES</strong>.</p>
|
|
<ul id="dli_08_0077__ul172625151156"><li id="dli_08_0077__li526261515155"><strong id="dli_08_0077__b18876249123220">dli.multi.version.enable</strong>: In this example, set this parameter to <strong id="dli_08_0077__b1446177133313">true</strong>, indicating that the DLI data versioning function is enabled for table data backup and restoration.</li><li id="dli_08_0077__li026291521511"><strong id="dli_08_0077__b1957713013311">comment</strong>: table description, which can be modified later.</li><li id="dli_08_0077__li0262515141518"><strong id="dli_08_0077__b1817952123317">orc.compress</strong>: compression mode of the <strong id="dli_08_0077__b48059385348">orc</strong> format, which is <strong id="dli_08_0077__b16727134453419">ZLIB</strong> in this example.</li><li id="dli_08_0077__li5262715201513"><strong id="dli_08_0077__b7884155743414">auto.purge</strong>: In this example, set this parameter to <strong id="dli_08_0077__b392250193512">true</strong>, indicating that data that is deleted or overwritten will bypass the recycle bin and be permanently deleted.</li></ul>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen868716251265"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTs</span><span class="w"> </span><span class="n">table3</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">col_1</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_2</span><span class="w"> </span><span class="n">STRING</span>
|
|
<span class="p">)</span>
|
|
<span class="n">PARTITIONED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="p">(</span><span class="n">col_3</span><span class="w"> </span><span class="nb">DATE</span><span class="p">)</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">rcfile</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span>
|
|
<span class="n">TBLPROPERTIES</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">dli</span><span class="p">.</span><span class="n">multi</span><span class="p">.</span><span class="k">version</span><span class="p">.</span><span class="n">enable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">true</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="k">comment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'Created by dli'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">orc</span><span class="p">.</span><span class="n">compress</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'ZLIB'</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">auto</span><span class="p">.</span><span class="n">purge</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">true</span>
|
|
<span class="p">);</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0077__section18908162241516"><h4 class="sectiontitle">Example 6: Creating a Non-Partitioned Table in textfile Format and Setting ROW FORMAT</h4><p id="dli_08_0077__p1331205215014">Example description: Create a non-partitioned table named <strong id="dli_08_0077__b16989114611361">table4</strong> in the <strong id="dli_08_0077__b41981051113613">textfile</strong> format and set <strong id="dli_08_0077__b141461412113711">ROW FORMAT</strong> (the ROW FORMAT function is available only for textfile tables).</p>
|
|
<ul id="dli_08_0077__ul780213618314"><li id="dli_08_0077__li177621581632"><strong id="dli_08_0077__b111351851103916">FIELDS</strong>: columns in a table. Each field has a name and data type. Fields in a table are separated by slashes (/).</li><li id="dli_08_0077__li9671621649"><strong id="dli_08_0077__b12554172017401">COLLECTION ITEMS</strong>: A collection item refers to an element in a group of data, which can be an array, a list, or a collection. Collection items in a table are separated by $.</li><li id="dli_08_0077__li48022361836"><strong id="dli_08_0077__b1178615114113">MAP KEYS</strong>: A map key is a data structure of key-value pairs and is used to store a group of associated data. Map keys in a table are separated by number signs (#).</li><li id="dli_08_0077__li136971101340"><strong id="dli_08_0077__b1191915211416">LINES</strong>: rows in a table. Each row contains a group of field values. Rows in a table end with <strong id="dli_08_0077__b1235851764212">\n</strong>. (Note that only <strong id="dli_08_0077__b547510212422">\n</strong> can be used as the row separator.)</li><li id="dli_08_0077__li17802183610319"><strong id="dli_08_0077__b6604102919427">NULL</strong>: a special value that represents a missing or unknown value. In a table, <strong id="dli_08_0077__b12515414144313">NULL</strong> indicates that the field has no value or the value is unknown. When there is a null value in the data, it is represented by the string <strong id="dli_08_0077__b14898202764411">null</strong>.</li></ul>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0077__screen6591111419353"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">table4</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">col_1</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">col_2</span><span class="w"> </span><span class="nb">INT</span>
|
|
<span class="p">)</span>
|
|
<span class="n">STORED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">textfile</span>
|
|
<span class="k">LOCATION</span><span class="w"> </span><span class="s1">'obs://bucketName/filePath'</span>
|
|
<span class="k">ROW</span><span class="w"> </span><span class="n">FORMAT</span>
|
|
<span class="n">DELIMITED</span><span class="w"> </span><span class="n">FIELDS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="s1">'/'</span>
|
|
<span class="n">COLLECTION</span><span class="w"> </span><span class="n">ITEMS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="s1">'$'</span>
|
|
<span class="k">MAP</span><span class="w"> </span><span class="n">KEYS</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="s1">'#'</span>
|
|
<span class="n">LINES</span><span class="w"> </span><span class="n">TERMINATED</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="s1">'\n'</span>
|
|
<span class="k">NULL</span><span class="w"> </span><span class="k">DEFINED</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s1">'null'</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0223.html">Creating an OBS Table</a></div>
|
|
</div>
|
|
</div>
|
|
|