我正在使用 sqoop 将 mysql 表导入 HBase。通常,HBase 的行键不只是由一列组成,通常是两列或三列 + 时间戳的组合,例如row key = ${col1}${col2}${timestamp}
.
我无法使用 sqoop 让它工作,只是想知道 sqoop --hbase-row-key 是否允许我--hbase-row-key=col1, col2, tiemstamp
在导入期间执行类似的操作,然后我的 HBase 行键最终会包含三个字段组合?
I found the answer myself:
composite keys were added in sqoop 1.4.4: http://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#idp3672480
此命令似乎将复合键导入 hbase
sqoop \
import --verbose \
--connect "yourDatabase" \
--username yourUser \
--password-file yourPassword.password \
--table originTable \
--hbase-create-table \
--hbase-table destinationTable \
--column-family yourFamily \
--hbase-row-key keyExample1,keyExample2
然而,我认为这个命令有两个问题。正如一些人指出的那样,新的键列只是一个连接,下划线作为--hbase-row-key
定义的分隔。除了从导入的数据中删除指定为行键的原始列之外,仅在新表中插入复合键。
执行复合键并与分隔符结合,例如:
row key = col1_col2_col3