Import 如何在sqoop导入中修改查询内容?

Import 如何在sqoop导入中修改查询内容?,import,hbase,sqoop,Import,Hbase,Sqoop,对不起,我的英语很差 这是我的问题。我必须将数据从MySQL导入HBase。为了提高性能,MySQL将一个大表划分为几个小表。例如,“消息”表分为“消息0”、“消息1”和“…”信息_100' 我需要将这些消息表导入HBase中的单个表(如“message”)。每个表中的主键都是message_id,并且是自动递增的。正如我们所知,HBase有一个唯一的行键。我想在message_id列中添加前缀 我无法在这些表中添加hbase行键列,因此我希望修改sqoop查询参数中的列内容。我使用的导入命令如

对不起,我的英语很差

这是我的问题。我必须将数据从MySQL导入HBase。为了提高性能,MySQL将一个大表划分为几个小表。例如,“消息”表分为“消息0”、“消息1”和“…”信息_100'

我需要将这些消息表导入HBase中的单个表(如“message”)。每个表中的主键都是message_id,并且是自动递增的。正如我们所知,HBase有一个唯一的行键。我想在message_id列中添加前缀

我无法在这些表中添加hbase行键列,因此我希望修改sqoop查询参数中的列内容。我使用的导入命令如下所示:

sqoop import --connect jdbc:mysql://host:port/message 
--username message --password message \
--query "select 't0_'+ message_id as message_key, some_split_id, some_other_columns\
from message_0 where message_id >30000 and message_id <= 31000 and \$CONDITIONS" 
--split-by some_split_id --hbase-row-key message_key 
--hbase-table message --column-family cf1
命令行(在下面添加参数):

是否可以修改--query参数中的列内容?我是否必须自己编写映射作业才能将数据从多个表导入HBase中的一个表中


感谢您耐心阅读这个长问题。

我用以下方法解决了一个类似的问题:

首先,concat()可以帮助将两列合并为一列,语法如下

     select concat('t0_',message_id) as message_key, ...
然后,将以下选项添加到sqoop导入中,以指定“message_key”应被视为字符串

     --map-column-java message_key=String

希望能有所帮助。谢谢。

Hi,你有没有想过用MySQL创建一个视图,然后从该视图而不是每个表导入数据?@JpBond听起来不错。虽然我担心我的老板不会买这个,但我会和他谈谈。非常感谢你。但仍有一些情况下,我必须自己编写映射作业。
     select concat('t0_',message_id) as message_key, ...
     --map-column-java message_key=String