doc-exports/docs/dli/sqlreference/dli_08_0389.html
Su, Xiaomeng 76a5b1ee83 dli_sqlreference_20240227
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>
2024-03-27 22:02:33 +00:00

416 lines
47 KiB
HTML

<a name="dli_08_0389"></a><a name="dli_08_0389"></a>
<h1 class="topictitle1">Redis Source Table</h1>
<div id="body8662426"><div class="section" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_section13926185035213"><h4 class="sectiontitle">Function</h4><p id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_p18963184212118">Create a source stream to obtain data from Redis as input for jobs.</p>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_section19566131381513"><h4 class="sectiontitle">Prerequisites</h4><ul id="dli_08_0389__en-us_topic_0000001262335926_ul411349165310"><li id="dli_08_0389__en-us_topic_0000001262335926_li176237592324">An enhanced datasource connection has been created for DLI to connect to the Redis database, so that you can configure security group rules as required.
</li></ul>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_section2069551919512"><a name="dli_08_0389__en-us_topic_0000001262335926_section2069551919512"></a><a name="en-us_topic_0000001262335926_section2069551919512"></a><h4 class="sectiontitle">Precautions</h4><ul id="dli_08_0389__en-us_topic_0000001262335926_ul163752885110"><li id="dli_08_0389__en-us_topic_0000001262335926_li182301827192316">When creating a Flink OpenSource SQL job, you need to set <strong id="dli_08_0389__en-us_topic_0000001262335926_b171833510577">Flink Version</strong> to <strong id="dli_08_0389__en-us_topic_0000001262335926_b1571812352576">1.12</strong> on the <strong id="dli_08_0389__en-us_topic_0000001262335926_b14719173565714">Running Parameters</strong> tab of the job editing page, select <strong id="dli_08_0389__en-us_topic_0000001262335926_b771923511571">Save Job Log</strong>, and set the OBS bucket for saving job logs.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li63742818515">To obtain the key values, you can set the primary key in Flink. The primary key maps to the Redis key.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li20233539172616">The primary key cannot be a composite primary key, and only can be one field.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li156214421364"><a name="dli_08_0389__en-us_topic_0000001262335926_li156214421364"></a><a name="en-us_topic_0000001262335926_li156214421364"></a>Constraints on <strong id="dli_08_0389__en-us_topic_0000001262335926_b2804141584">schema-syntax</strong>:<ul id="dli_08_0389__en-us_topic_0000001262335926_ul123061357123611"><li id="dli_08_0389__en-us_topic_0000001262335926_li136351521994">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b9486721105810">schema-syntax</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b19492122111588">map</strong> or <strong id="dli_08_0389__en-us_topic_0000001262335926_b174931121195819">array</strong>, there can be only one non-primary key and it must be of the same <strong id="dli_08_0389__en-us_topic_0000001262335926_b649312217586">map</strong> or <strong id="dli_08_0389__en-us_topic_0000001262335926_b1949332165811">array</strong> type.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li273823533910">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b3661836125818">schema-syntax</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b7677369588">fields-scores</strong>, the number of non-primary keys must be an even number, and the second key of every two keys except the primary key must be of the <strong id="dli_08_0389__en-us_topic_0000001262335926_b267536105816">double</strong> type. The <strong id="dli_08_0389__en-us_topic_0000001262335926_b868103665819">double</strong> value is the score of the previous key. The following is an example:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen31671225143412">CREATE TABLE redisSource (
redisKey string,
order_id string,
score1 double,
order_channel string,
score2 double,
order_time string,
score3 double,
pay_amount double,
score4 double,
real_pay double,
score5 double,
pay_time string,
score6 double,
user_id string,
score7 double,
user_name string,
score8 double,
area_id string,
score9 double,
primary key (redisKey) not enforced
) WITH (
'connector' = 'redis',
'host' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i14964853124313">RedisIP</em>',
'password' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i11381115884314">Redis</em><em id="dli_08_0389__en-us_topic_0000001262335926_i9881358447">Password</em>',
'data-type' = 'sorted-set',
'deploy-mode' = 'master-replica',
'schema-syntax' = 'fields-scores'
);</pre>
</li></ul>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li817313914378"><a name="dli_08_0389__en-us_topic_0000001262335926_li817313914378"></a><a name="en-us_topic_0000001262335926_li817313914378"></a>Restrictions on <strong id="dli_08_0389__en-us_topic_0000001262335926_b872442655918">data-type</strong>:<ul id="dli_08_0389__en-us_topic_0000001262335926_ul172608267378"><li id="dli_08_0389__en-us_topic_0000001262335926_li18601743183716">When <strong id="dli_08_0389__en-us_topic_0000001262335926_b2047149806">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b1054139801">set</strong>, the types of non-primary keys defined in Flink must be the same.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li27791491376">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b847922517017">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b3485125606">sorted-set</strong> and <strong id="dli_08_0389__en-us_topic_0000001262335926_b048682520019">schema-syntax</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b174866251907">fields</strong> or <strong id="dli_08_0389__en-us_topic_0000001262335926_b1248719257012">array</strong>, only <strong id="dli_08_0389__en-us_topic_0000001262335926_b5487425704">sorted-set</strong> values can be read from Redis, and the <strong id="dli_08_0389__en-us_topic_0000001262335926_b10487172513017">score</strong> value cannot be read.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1690199111318">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b15837143909">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b68376431402">string</strong>, only one non-primary key field is allowed.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li99098335466">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b1642610030">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b475378232">sorted-set</strong> and <strong id="dli_08_0389__en-us_topic_0000001262335926_b71321412430">schema-syntax</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b6116151614315">map</strong>, only one non-primary key field is allowed besides the primary key field.<p id="dli_08_0389__en-us_topic_0000001262335926_p555811344467">This non-primary key field must be of the <strong id="dli_08_0389__en-us_topic_0000001262335926_b18138122813411">map</strong> type. The map value of the field must be of the <strong id="dli_08_0389__en-us_topic_0000001262335926_b433112353201">double</strong> type, indicating the score. The map key of the field indicates the value in the Redis set.</p>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li3509181917479">If <strong id="dli_08_0389__en-us_topic_0000001262335926_b198945203416">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b1990152103414">sorted-set</strong> and <strong id="dli_08_0389__en-us_topic_0000001262335926_b99901052203414">schema-syntax</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b13991205216342">array-scores</strong>, only two non-primary keys are allowed and must be of the <strong id="dli_08_0389__en-us_topic_0000001262335926_b149910527345">array</strong> type.<div class="p" id="dli_08_0389__en-us_topic_0000001262335926_p162571120194719">The first key indicates values in the Redis set. The second key is of the <strong id="dli_08_0389__en-us_topic_0000001262335926_b1931514319351">array&lt;double&gt;</strong> type, indicating index scores. The following is an example:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen529105693713">CREATE TABLE redisSink (
order_id string,
arrayField Array&lt;String&gt;,
arrayScore array&lt;double&gt;,
primary key (order_id) not enforced
) WITH (
'connector' = 'redis',
'host' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i95731223184819">RedisIP</em>',
'password' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i422813064810">Redis</em><em id="dli_08_0389__en-us_topic_0000001262335926_i18228130174815">Password</em>',
'data-type' = 'sorted-set',
"default-score" = '3',
'deploy-mode' = 'master-replica',
'schema-syntax' = 'array-scores'
);</pre>
</div>
</li></ul>
</li></ul>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_section1810912715521"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0277_screen29519537283"><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="n">dwsSource</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="n">attr_name</span><span class="w"> </span><span class="n">attr_type</span><span class="w"> </span>
<span class="w"> </span><span class="p">(</span><span class="s1">','</span><span class="w"> </span><span class="n">attr_name</span><span class="w"> </span><span class="n">attr_type</span><span class="p">)</span><span class="o">*</span><span class="w"> </span>
<span class="w"> </span><span class="p">(</span><span class="s1">','</span><span class="w"> </span><span class="n">watermark</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">rowtime_column_name</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">watermark</span><span class="o">-</span><span class="n">strategy_expression</span><span class="p">)</span>
<span class="w"> </span><span class="p">,</span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="n">attr_name</span><span class="p">,</span><span class="w"> </span><span class="p">...)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="n">ENFORCED</span>
<span class="p">)</span>
<span class="k">with</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="s1">'connector'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'redis'</span><span class="p">,</span>
<span class="w"> </span><span class="s1">'host'</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">''</span>
<span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_section16603141783010"><h4 class="sectiontitle">Parameters</h4>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_table15955155035214" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Parameter description</caption><thead align="left"><tr id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_row29690509522"><th align="left" class="cellrowborder" valign="top" width="20.25%" id="mcps1.3.5.2.2.6.1.1"><p id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_p697520507529">Parameter</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="8.450000000000001%" id="mcps1.3.5.2.2.6.1.2"><p id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_p997925010528">Mandatory</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="11.86%" id="mcps1.3.5.2.2.6.1.3"><p id="dli_08_0389__en-us_topic_0000001262335926_p16760165920121">Default Value</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="16.91%" id="mcps1.3.5.2.2.6.1.4"><p id="dli_08_0389__en-us_topic_0000001262335926_p115642046191210">Data Type</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="42.53%" id="mcps1.3.5.2.2.6.1.5"><p id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_p9983150185215">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_row398835017524"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p11571163194715">connector</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p457213319472">Yes</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p10803204281212">None</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p056434631215">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p15721631124720">Connector to be used. Set this parameter to <strong id="dli_08_0389__en-us_topic_0000001262335926_b1217712110368">redis</strong>.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_row210135125214"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p5572731184713">host</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p3572133154715">Yes</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p08030423126">None</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p10564846141213">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p1757263114475">Redis connector address.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_row124195117528"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p1057218314476">port</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p11572113114477">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1380319422125">6379</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p456424619121">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p657263154715">Redis connector port.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_en-us_topic_0113887276_en-us_topic_0111499973_row15401751115211"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p1457293194711">password</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p6572153120474">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p73474286503">None</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p356417468127">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_en-us_topic_0000001080679435_p1572331194712">Redis authentication password.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row15192195234419"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p419212521448">namespace</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1219295214413">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1755252965018">None</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p0192195264414">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p219255220440">Redis key namespace.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row1135235419445"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1435275418442">delimiter</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p23521554154418">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p135265404414">:</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1635219546445">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p5352454144413">Delimiter between the Redis key and namespace.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row665722864612"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p5657182854620">data-type</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p06574284465">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p6657192854619">hash</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p565752884615">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1565702864615">Redis data type. Available values are as follows:</p>
<ul id="dli_08_0389__en-us_topic_0000001262335926_ul1995143910473"><li id="dli_08_0389__en-us_topic_0000001262335926_li6995193915475">hash</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1727616434474">list</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1966154411477">set</li><li id="dli_08_0389__en-us_topic_0000001262335926_li291412452478">sorted-set</li><li id="dli_08_0389__en-us_topic_0000001262335926_li107761449134720">string</li></ul>
<p id="dli_08_0389__en-us_topic_0000001262335926_p17374181164917">For details about the constraints, see <a href="#dli_08_0389__en-us_topic_0000001262335926_li817313914378">Constraints on data-type</a>.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row991541014813"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1091512109486">schema-syntax</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p491541024812">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p3915131054817">fields</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p9915110124818">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1319513182387">Redis schema semantics. Available values are as follows (for details, see <a href="#dli_08_0389__en-us_topic_0000001262335926_section2069551919512">Precautions</a> and <a href="#dli_08_0389__en-us_topic_0000001262335926_section831915115116">FAQ</a>):</p>
<ul id="dli_08_0389__en-us_topic_0000001262335926_ul13496191015240"><li id="dli_08_0389__en-us_topic_0000001262335926_li64966101248"><strong id="dli_08_0389__en-us_topic_0000001262335926_b0161741164217">fields</strong>: applicable to all data types</li><li id="dli_08_0389__en-us_topic_0000001262335926_li2627112019248"><strong id="dli_08_0389__en-us_topic_0000001262335926_b137198459428">fields-scores</strong>: applicable to <strong id="dli_08_0389__en-us_topic_0000001262335926_b77205459424">sorted-set</strong> data</li><li id="dli_08_0389__en-us_topic_0000001262335926_li16505143442414"><strong id="dli_08_0389__en-us_topic_0000001262335926_b1329115313421">array</strong>: applicable to <strong id="dli_08_0389__en-us_topic_0000001262335926_b18301353154210">list</strong>, <strong id="dli_08_0389__en-us_topic_0000001262335926_b0311453114217">set</strong>, and <strong id="dli_08_0389__en-us_topic_0000001262335926_b4311353184216">sorted-set</strong> data</li><li id="dli_08_0389__en-us_topic_0000001262335926_li119731655102413"><strong id="dli_08_0389__en-us_topic_0000001262335926_b18136358194214">array-scores</strong>: applicable to <strong id="dli_08_0389__en-us_topic_0000001262335926_b131371458154211">sorted-set</strong> data</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1520510832516"><strong id="dli_08_0389__en-us_topic_0000001262335926_b14425334436">map</strong>: applicable to <strong id="dli_08_0389__en-us_topic_0000001262335926_b1943112394316">hash</strong> and <strong id="dli_08_0389__en-us_topic_0000001262335926_b04311438437">sorted-set</strong> data</li></ul>
<p id="dli_08_0389__en-us_topic_0000001262335926_p159711439499">For details about the constraints, see <a href="#dli_08_0389__en-us_topic_0000001262335926_li156214421364">Constraints on schema-syntax</a>.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row5416114395"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p104117118390">deploy-mode</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p641201111397">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p680320427129">standalone</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p12564114631212">String</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p124161110399">Deployment mode of the Redis cluster. The value can be <strong id="dli_08_0389__en-us_topic_0000001262335926_b1876110114418">standalone</strong>, <strong id="dli_08_0389__en-us_topic_0000001262335926_b9877141084417">master-replica</strong>, or <strong id="dli_08_0389__en-us_topic_0000001262335926_b20877161013443">cluster</strong>. The default value is <strong id="dli_08_0389__en-us_topic_0000001262335926_b1377114178440">standalone</strong>.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row11421243182419"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p91429439241">retry-count</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1214218431249">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p111422436244">5</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p16142343202411">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1514254312247">Number of attempts to connect to the Redis cluster.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row35139459243"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p5513174592413">connection-timeout-millis</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p12513164512415">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p145134451249">10000</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p15131845162410">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p651384513248">Maximum timeout for connecting to the Redis cluster.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row129182132518"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p10932162519">commands-timeout-millis</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p159122112518">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p59320251">2000</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p139728259">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p181022202517">Maximum time for waiting for a completion response.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row145384872415"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p7541748102418">rebalancing-timeout-millis</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p19541448152415">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p5545483242">15000</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p13548489244">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1854448102418">Sleep time when the Redis cluster fails.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row393516498245"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1493518491244">scan-keys-count</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p139351949172411">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p5935194982413">1000</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p18935149162419">Integer</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p18935104910246">Number of data records read in each scan.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row15644042519"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1864110102520">default-score</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p186414012510">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p106416014258">0</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p106410020257">Double</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1464160172514">Default score when <strong id="dli_08_0389__en-us_topic_0000001262335926_b14431253134510">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b2044375374511">sorted-set</strong>.</p>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row170253422011"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p157021934122019">deserialize-error-policy</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p14702183422010">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1670212343201">fail-job</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p1170217345202">Enum</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p61681019142213">Policy of how to process a data parsing failure. Available values are as follows:</p>
<ul id="dli_08_0389__en-us_topic_0000001262335926_ul399111416217"><li id="dli_08_0389__en-us_topic_0000001262335926_li4991144152111"><strong id="dli_08_0389__en-us_topic_0000001262335926_b17791454114615">fail-job</strong>: Fail the job.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li13319142118223"><strong id="dli_08_0389__en-us_topic_0000001262335926_b1934313634711">skip-row</strong>: Skip the current data.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li23961035182214"><strong id="dli_08_0389__en-us_topic_0000001262335926_b17836112174717">null-field</strong>: Set the current data to null.</li></ul>
</td>
</tr>
<tr id="dli_08_0389__en-us_topic_0000001262335926_row142541352162412"><td class="cellrowborder" valign="top" width="20.25%" headers="mcps1.3.5.2.2.6.1.1 "><p id="dli_08_0389__en-us_topic_0000001262335926_p2254135215244">skip-null-values</p>
</td>
<td class="cellrowborder" valign="top" width="8.450000000000001%" headers="mcps1.3.5.2.2.6.1.2 "><p id="dli_08_0389__en-us_topic_0000001262335926_p225445262410">No</p>
</td>
<td class="cellrowborder" valign="top" width="11.86%" headers="mcps1.3.5.2.2.6.1.3 "><p id="dli_08_0389__en-us_topic_0000001262335926_p425405214241">true</p>
</td>
<td class="cellrowborder" valign="top" width="16.91%" headers="mcps1.3.5.2.2.6.1.4 "><p id="dli_08_0389__en-us_topic_0000001262335926_p52541552162411">Boolean</p>
</td>
<td class="cellrowborder" valign="top" width="42.53%" headers="mcps1.3.5.2.2.6.1.5 "><p id="dli_08_0389__en-us_topic_0000001262335926_p02543525248">Whether null values will be skipped.</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_dli_08_0238_section1884612595314"><h4 class="sectiontitle">Example</h4><p id="dli_08_0389__en-us_topic_0000001262335926_p7750124218366">In this example, data is read from the DCS Redis data source and written to the Print result table. The procedure is as follows:</p>
<ol id="dli_08_0389__en-us_topic_0000001262335926_ol185872217530"><li id="dli_08_0389__en-us_topic_0000001262335926_li6127741153217">Create an enhanced datasource connection in the VPC and subnet where Redis locates, and bind the connection to the required Flink elastic resource pool.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1233002211514">Set Redis security groups and add inbound rules to allow access from the Flink queue. Test the connectivity using the Redis address. If the connection is successful, the datasource is bound to the queue. Otherwise, the binding fails.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li125852265315">Run the following commands on the Redis client to insert data into different keys and store the data in hash format:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen161171405367">HMSET redisSource order_id 202103241000000001 order_channel webShop order_time "2021-03-24 10:00:00" pay_amount 100.00 real_pay 100.00 pay_time "2021-03-24 10:02:03" user_id 0001 user_name Alice area_id 330106
HMSET redisSource1 order_id 202103241606060001 order_channel appShop order_time "2021-03-24 16:06:06" pay_amount 200.00 real_pay 180.00 pay_time "2021-03-24 16:10:06" user_id 0001 user_name Alice area_id 330106
HMSET redisSource2 order_id 202103251202020001 order_channel miniAppShop order_time "2021-03-25 12:02:02" pay_amount 60.00 real_pay 60.00 pay_time "2021-03-25 12:03:00" user_id 0002 user_name Bob area_id 330110</pre>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li561642232311">Create a Flink OpenSource SQL job. Enter the following job script to read data in hash format from Redis.<div class="p" id="dli_08_0389__en-us_topic_0000001262335926_p6585837172310"><a name="dli_08_0389__en-us_topic_0000001262335926_li561642232311"></a><a name="en-us_topic_0000001262335926_li561642232311"></a>When you create a job, set <strong id="dli_08_0389__en-us_topic_0000001262335926_b09831307511">Flink Version</strong> to <strong id="dli_08_0389__en-us_topic_0000001262335926_b149841065112">1.12</strong> on the <strong id="dli_08_0389__en-us_topic_0000001262335926_b189841103510">Running Parameters</strong> tab. Select <strong id="dli_08_0389__en-us_topic_0000001262335926_b119841301519">Save Job Log</strong>, and specify the OBS bucket for saving job logs. <strong id="dli_08_0389__en-us_topic_0000001262335926_b184723617519">Change the values of the parameters in bold as needed in the following script.</strong><pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen250543419234">CREATE TABLE redisSource (
redisKey string,
order_id string,
order_channel string,
order_time string,
pay_amount double,
real_pay double,
pay_time string,
user_id string,
user_name string,
area_id string,
primary key (redisKey) not enforced --Obtains the key value from Redis.
) WITH (
'connector' = 'redis',
'host' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i351220483261"><strong id="dli_08_0389__en-us_topic_0000001262335926_b104259106278">RedisIP</strong></em>',
'password' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i188771451112617"><strong id="dli_08_0389__en-us_topic_0000001262335926_b1657591262713">Redis</strong></em><em id="dli_08_0389__en-us_topic_0000001262335926_i1427025811261"><strong id="dli_08_0389__en-us_topic_0000001262335926_b1157601213274">Password</strong></em>',
'data-type' = 'hash',
'deploy-mode' = 'master-replica'
);
CREATE TABLE printSink (
redisKey string,
order_id string,
order_channel string,
order_time string,
pay_amount double,
real_pay double,
pay_time string,
user_id string,
user_name string,
area_id string
) WITH (
'connector' = 'print'
);
insert into printSink select * from redisSource;</pre>
</div>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li10581122205314">Perform the following operations to view the data result in the <strong id="dli_08_0389__en-us_topic_0000001262335926_b1521443318511">taskmanager.out</strong> file:<ol type="a" id="dli_08_0389__en-us_topic_0000001262335926_ol864115198285"><li id="dli_08_0389__en-us_topic_0000001262335926_li10901621122819">Log in to the DLI console. In the navigation pane, choose <strong id="dli_08_0389__en-us_topic_0000001262335926_b10768153417517">Job Management</strong> &gt; <strong id="dli_08_0389__en-us_topic_0000001262335926_b1376816340512">Flink Jobs</strong>.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1912163912282">Click the name of the corresponding Flink job, choose <strong id="dli_08_0389__en-us_topic_0000001262335926_b193712036125110">Run Log</strong>, click <strong id="dli_08_0389__en-us_topic_0000001262335926_b10371103645114">OBS Bucket</strong>, and locate the folder of the log you want to view according to the date.</li><li id="dli_08_0389__en-us_topic_0000001262335926_li0641191914285">Go to the folder of the date, find the folder whose name contains <strong id="dli_08_0389__en-us_topic_0000001262335926_b5203143875113">taskmanager</strong>, download the <strong id="dli_08_0389__en-us_topic_0000001262335926_b17204113875112">taskmanager.out</strong> file, and view result logs.</li></ol>
<p id="dli_08_0389__en-us_topic_0000001262335926_p1282118785912">The data result is as follows:</p>
<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen19820071195">+I(redisSource1,202103241606060001,appShop,2021-03-24 16:06:06,200.0,180.0,2021-03-24 16:10:06,0001,Alice,330106)
+I(redisSource,202103241000000001,webShop,2021-03-24 10:00:00,100.0,100.0,2021-03-24 10:02:03,0001,Alice,330106)
+I(redisSource2,202103251202020001,miniAppShop,2021-03-25 12:02:02,60.0,60.0,2021-03-25 12:03:00,0002,Bob,330110)</pre>
</li></ol>
</div>
<div class="section" id="dli_08_0389__en-us_topic_0000001262335926_section831915115116"><a name="dli_08_0389__en-us_topic_0000001262335926_section831915115116"></a><a name="en-us_topic_0000001262335926_section831915115116"></a><h4 class="sectiontitle">FAQ</h4><ul id="dli_08_0389__en-us_topic_0000001262335926_ul899344903420"><li id="dli_08_0389__en-us_topic_0000001262335926_li599454903410">Q: What should I do if the Flink job execution fails and the log contains the following error information?<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen87491816182812">Caused by: org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: RealLine:36;Usage of 'set' data-type and 'fields' schema syntax in source Redis connector with multiple non-key column types. As 'set' in Redis is not sorted, it's not possible to map 'set's values to table schema with different types.</pre>
<p id="dli_08_0389__en-us_topic_0000001262335926_p8915717122811">A: If <strong id="dli_08_0389__en-us_topic_0000001262335926_b1616131335216">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b99351214195210">set</strong>, the data types of non-primary key fields in Flink are different. As a result, this error is reported. When <strong id="dli_08_0389__en-us_topic_0000001262335926_b1023018450524">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b1323024585215">set</strong>, the types of non-primary keys defined in Flink must be the same.</p>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li0512152011417">Q: If <strong id="dli_08_0389__en-us_topic_0000001262335926_b16306622155313">data-type</strong> is <strong id="dli_08_0389__en-us_topic_0000001262335926_b960252335317">hash</strong>, what are the differences between <strong id="dli_08_0389__en-us_topic_0000001262335926_b1356541316543">schema-syntax</strong> set to <strong id="dli_08_0389__en-us_topic_0000001262335926_b103514165416">fields</strong> and that to <strong id="dli_08_0389__en-us_topic_0000001262335926_b2083711810540">map</strong>?<p id="dli_08_0389__en-us_topic_0000001262335926_p183227249416">A: When <strong id="dli_08_0389__en-us_topic_0000001262335926_b17284135285412">schema-syntax</strong> is set to <strong id="dli_08_0389__en-us_topic_0000001262335926_b17532453105418">fields</strong>, the hash value in the Redis key is assigned to the field with the same name in Flink. When <strong id="dli_08_0389__en-us_topic_0000001262335926_b17971173465512">schema-syntax</strong> is set to <strong id="dli_08_0389__en-us_topic_0000001262335926_b82151436195520">map</strong>, the hash key and hash value of each hash in Redis are put into a map, which represents the value of the corresponding Flink field. Specifically, this map contains all hash keys and hash values of a key in Redis.</p>
<ul id="dli_08_0389__en-us_topic_0000001262335926_ul54824552320"><li id="dli_08_0389__en-us_topic_0000001262335926_li156781651143214">For <strong id="dli_08_0389__en-us_topic_0000001262335926_b143116143019">fields</strong>:<ol id="dli_08_0389__en-us_topic_0000001262335926_ol1833516453334"><li id="dli_08_0389__en-us_topic_0000001262335926_li93351945153314">Insert the following data into Redis:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen18369191555319">HMSET redisSource order_id 202103241000000001 order_channel webShop order_time "2021-03-24 10:00:00" pay_amount 100.00 real_pay 100.00 pay_time "2021-03-24 10:02:03" user_id 0001 user_name Alice area_id 330106</pre>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li1733534563316">When <strong id="dli_08_0389__en-us_topic_0000001262335926_b252417591109">schema-syntax</strong> is set to <strong id="dli_08_0389__en-us_topic_0000001262335926_b1865513114">fields</strong>, use the following job script:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen151143220499">CREATE TABLE redisSource (
redisKey string,
order_id string,
order_channel string,
order_time string,
pay_amount double,
real_pay double,
pay_time string,
user_id string,
user_name string,
area_id string,
primary key (redisKey) not enforced
) WITH (
'connector' = 'redis',
'host' = '<strong id="dli_08_0389__en-us_topic_0000001262335926_b14453171533411"><em id="dli_08_0389__en-us_topic_0000001262335926_i1415111142344">RedisIP</em></strong>',
'password' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i149910245343"><strong id="dli_08_0389__en-us_topic_0000001262335926_b714013202346">Redis</strong><strong id="dli_08_0389__en-us_topic_0000001262335926_b8847112313410">Password</strong></em>',
'data-type' = 'hash',
'deploy-mode' = 'master-replica'
);
CREATE TABLE printSink (
redisKey string,
order_id string,
order_channel string,
order_time string,
pay_amount double,
real_pay double,
pay_time string,
user_id string,
user_name string,
area_id string
) WITH (
'connector' = 'print'
);
insert into printSink select * from redisSource;</pre>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li033504573319">The job execution result is as follows:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen1827461710558">+I(redisSource,202103241000000001,webShop,2021-03-24 10:00:00,100.0,100.0,2021-03-24 10:02:03,0001,Alice,330106)</pre>
</li></ol>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li671544383412">For <strong id="dli_08_0389__en-us_topic_0000001262335926_b1793014386110">map</strong>:<ol id="dli_08_0389__en-us_topic_0000001262335926_ol15667105843410"><li id="dli_08_0389__en-us_topic_0000001262335926_li066885823418">Insert the following data into Redis:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen15511538185620">HMSET redisSource order_id 202103241000000001 order_channel webShop order_time "2021-03-24 10:00:00" pay_amount 100.00 real_pay 100.00 pay_time "2021-03-24 10:02:03" user_id 0001 user_name Alice area_id 330106</pre>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li166682058143418">When <strong id="dli_08_0389__en-us_topic_0000001262335926_b534116473113">schema-syntax</strong> is set to <strong id="dli_08_0389__en-us_topic_0000001262335926_b6342447316">map</strong>, use the following job script:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen1051173875617">CREATE TABLE redisSource (
redisKey string,
order_result map&lt;string, string&gt;,
primary key (redisKey) not enforced
) WITH (
'connector' = 'redis',
'host' = '<strong id="dli_08_0389__en-us_topic_0000001262335926_b79009320351"><em id="dli_08_0389__en-us_topic_0000001262335926_i790003212353">RedisIP</em></strong>',
'password' = '<em id="dli_08_0389__en-us_topic_0000001262335926_i20992838143512"><strong id="dli_08_0389__en-us_topic_0000001262335926_b19992133812359">Redis</strong><strong id="dli_08_0389__en-us_topic_0000001262335926_b16992438133517">Password</strong></em>',
'data-type' = 'hash',
'deploy-mode' = 'master-replica',
'schema-syntax' = 'map'
);
CREATE TABLE printSink (
redisKey string,
order_result map&lt;string, string&gt;
) WITH (
'connector' = 'print'
);
insert into printSink select * from redisSource;</pre>
</li><li id="dli_08_0389__en-us_topic_0000001262335926_li4668658133412">The job execution result is as follows:<pre class="screen" id="dli_08_0389__en-us_topic_0000001262335926_screen752238175614">+I(redisSource,{user_id=0001, user_name=Alice, pay_amount=100.00, real_pay=100.00, order_time=2021-03-24 10:00:00, area_id=330106, order_id=202103241000000001, order_channel=webShop, pay_time=2021-03-24 10:02:03})</pre>
</li></ol>
</li></ul>
</li></ul>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0381.html">Creating Source Tables</a></div>
</div>
</div>