You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by Yichao Yang <10...@qq.com> on 2020/06/16 11:16:19 UTC

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

Hi


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


Best,
Yichao Yang



发自我的iPhone


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



flink sql从HBase中读取的类型为ROW,怎么把ROW类型转换成INT
select cast(cf as Int) cf from hbase_table
直接这样转换不成功

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

Posted by Zhou Zach <is...@foxmail.com>.
可能是hbase里面有脏数据的问题,新建了一个新的hbase表,可以了,感谢回复




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Leonard Xu"<xbjtdcq@gmail.com&gt;;
发送时间:&nbsp;2020年6月17日(星期三) 上午10:45
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

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




Hi,
&gt; 在 2020年6月17日,09:33,Zhou Zach <ispmd@foxmail.com&gt; 写道:
&gt; 
&gt; 怎么把int转换成Integer呢或者把Integer转换成int

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

Best,
Leonard Xu

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

Posted by Leonard Xu <xb...@gmail.com>.
Hi,
> 在 2020年6月17日,09:33,Zhou Zach <is...@foxmail.com> 写道:
> 
> 怎么把int转换成Integer呢或者把Integer转换成int

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

Best,
Leonard Xu

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

Posted by Zhou Zach <is...@foxmail.com>.
用.访问成功了,不过报了另外一个错误:
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"<xbjtdcq@gmail.com&gt;;
发送时间:&nbsp;2020年6月16日(星期二) 晚上8:50
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&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 <1048262223@qq.com&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 <ispmd@foxmail.com&amp;gt;
&gt; 发送时间: 2020年6月16日 19:10
&gt; 收件人: user-zh <user-zh@flink.apache.org&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; 直接这样转换不成功

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

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