flink sql 中怎么把ROW类型转换成INT

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

flink sql 中怎么把ROW类型转换成INT

Zhou Zach-2
flink sql从HBase中读取的类型为ROW,怎么把ROW类型转换成INT
select cast(cf as Int) cf from hbase_table
直接这样转换不成功
Reply | Threaded
Open this post in threaded view
|

回复:flink sql 中怎么把ROW类型转换成INT

Yichao Yang
Hi


row类型是不能强转int的,可以找一下阿里云flink sql的文档,其中有介绍哪些数据类型可以互转。


Best,
Yichao Yang



发自我的iPhone


------------------ 原始邮件 ------------------
发件人: Zhou Zach <[hidden email]&gt;
发送时间: 2020年6月16日 19:10
收件人: user-zh <[hidden email]&gt;
主题: 回复:flink sql 中怎么把ROW类型转换成INT



flink sql从HBase中读取的类型为ROW,怎么把ROW类型转换成INT
select cast(cf as Int) cf from hbase_table
直接这样转换不成功
Reply | Threaded
Open this post in threaded view
|

Re: flink sql 中怎么把ROW类型转换成INT

Leonard Xu
Hi
     Hbase connector中,除 rowkey 字段外,所有列簇 在FLINK中对应的类型都是 符合类型ROW(),这是因为ROW中可以包括多个 field 能够和 hbase 中的一个列簇可以包含多个列很好地对应。贴个文档,你一看就懂:

CREATE TABLE hTable (
 rowkey INT,
 family1 ROW<q1 INT>,
 family2 ROW<q2 STRING, q3 BIGINT>,
 family3 ROW<q4 DOUBLE, q5 BOOLEAN, q6 STRING>,
 PRIMARY KEY (rowkey) NOT ENFORCED
) WITH (...);
 
-- scan data from the HBase table
SELECT rowkey, family1.q1, family3.q4, family3.q6 FROM hTable;
 

这个文档正在编写当中,很快就可以在官网上看到。

祝好,
Leonard Xu

> 在 2020年6月16日,19:16,Yichao Yang <[hidden email]> 写道:
>
> Hi
>
>
> row类型是不能强转int的,可以找一下阿里云flink sql的文档,其中有介绍哪些数据类型可以互转。
>
>
> Best,
> Yichao Yang
>
>
>
> 发自我的iPhone
>
>
> ------------------ 原始邮件 ------------------
> 发件人: Zhou Zach <[hidden email]&gt;
> 发送时间: 2020年6月16日 19:10
> 收件人: user-zh <[hidden email]&gt;
> 主题: 回复:flink sql 中怎么把ROW类型转换成INT
>
>
>
> flink sql从HBase中读取的类型为ROW,怎么把ROW类型转换成INT
> select cast(cf as Int) cf from hbase_table
> 直接这样转换不成功

Reply | Threaded
Open this post in threaded view
|

回复: flink sql 中怎么把ROW类型转换成INT

Zhou Zach-2
用.访问成功了,不过报了另外一个错误:
offset (0) + length (4) exceed the capacity of the array: 2
这个错误提示 是不是 hbase取出来的int类型,
用users.addColumn("cf", "age", classOf[Integer]) 来转换是不是不对,
怎么把int转换成Integer呢或者把Integer转换成int





------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Leonard Xu"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月16日(星期二) 晚上8:50
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink sql 中怎么把ROW类型转换成INT



Hi
&nbsp;&nbsp;&nbsp;&nbsp; Hbase connector中,除 rowkey 字段外,所有列簇 在FLINK中对应的类型都是 符合类型ROW(),这是因为ROW中可以包括多个 field 能够和 hbase 中的一个列簇可以包含多个列很好地对应。贴个文档,你一看就懂:

CREATE TABLE hTable (
&nbsp;rowkey INT,
&nbsp;family1 ROW<q1 INT&gt;,
&nbsp;family2 ROW<q2 STRING, q3 BIGINT&gt;,
&nbsp;family3 ROW<q4 DOUBLE, q5 BOOLEAN, q6 STRING&gt;,
&nbsp;PRIMARY KEY (rowkey) NOT ENFORCED
) WITH (...);
&nbsp;
-- scan data from the HBase table
SELECT rowkey, family1.q1, family3.q4, family3.q6 FROM hTable;
&nbsp;

这个文档正在编写当中,很快就可以在官网上看到。

祝好,
Leonard Xu

&gt; 在 2020年6月16日,19:16,Yichao Yang <[hidden email]&gt; 写道:
&gt;
&gt; Hi
&gt;
&gt;
&gt; row类型是不能强转int的,可以找一下阿里云flink sql的文档,其中有介绍哪些数据类型可以互转。
&gt;
&gt;
&gt; Best,
&gt; Yichao Yang
&gt;
&gt;
&gt;
&gt; 发自我的iPhone
&gt;
&gt;
&gt; ------------------ 原始邮件 ------------------
&gt; 发件人: Zhou Zach <[hidden email]&amp;gt;
&gt; 发送时间: 2020年6月16日 19:10
&gt; 收件人: user-zh <[hidden email]&amp;gt;
&gt; 主题: 回复:flink sql 中怎么把ROW类型转换成INT
&gt;
&gt;
&gt;
&gt; flink sql从HBase中读取的类型为ROW,怎么把ROW类型转换成INT
&gt; select cast(cf as Int) cf from hbase_table
&gt; 直接这样转换不成功
Reply | Threaded
Open this post in threaded view
|

Re: flink sql 中怎么把ROW类型转换成INT

Leonard Xu

Hi,
> 在 2020年6月17日,09:33,Zhou Zach <[hidden email]> 写道:
>
> 怎么把int转换成Integer呢或者把Integer转换成int

我理解 Integer 和 int 是相同的类型,INT 是SQL的类型,Integer 是java中的具体实现类,这个错误看起来是在读 hbase中的数据时,数据的index不对,
能把 sql 和异常栈贴下吗?

Best,
Leonard Xu
Reply | Threaded
Open this post in threaded view
|

回复: flink sql 中怎么把ROW类型转换成INT

Zhou Zach-2
可能是hbase里面有脏数据的问题,新建了一个新的hbase表,可以了,感谢回复




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Leonard Xu"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月17日(星期三) 上午10:45
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink sql 中怎么把ROW类型转换成INT




Hi,
&gt; 在 2020年6月17日,09:33,Zhou Zach <[hidden email]&gt; 写道:
&gt;
&gt; 怎么把int转换成Integer呢或者把Integer转换成int

我理解 Integer 和 int 是相同的类型,INT 是SQL的类型,Integer 是java中的具体实现类,这个错误看起来是在读 hbase中的数据时,数据的index不对,
能把 sql 和异常栈贴下吗?

Best,
Leonard Xu