gpt4 book ai didi

oracle - 使用Sqoop从Oracle导入到HBase时修改数据

转载 作者:行者123 更新时间:2023-12-02 21:36:22 26 4
gpt4 key购买 nike

我正在尝试使用Sqoop将oracle数据库中的数据传输到我的HBase表中。我可以使用Java Sqoop客户端成功做到这一点。

但是,在这种情况下,我只是在进行传输,并且始终将hbase_row_key用作“COL1,COL2”。

现在我要做的是在将数据放入hbase表中之前,如果要确定是否存在COL2,则要确定hbase_row_key应该为“COl1,COL2”,如果不存在,则应该将其确定为““COl1,COL3” (假设始终存在COL3)。

我认为应该使用自定义映射器代替默认映射器,但是我不确定如何使用Sqoop。在将数据插入HBase之前如何使Sqoop使用自定义映射器。
在这方面的任何帮助将不胜感激。
再次感谢!..
以下是我的Java sqoop客户端代码:

import com.cloudera.sqoop.SqoopOptions;
import com.cloudera.sqoop.tool.ImportTool;

public class TestSqoopClient {

public static void main(String[] args) throws Exception {
SqoopOptions options = new SqoopOptions();
options.setConnectString("my_database_connection_tring");
options.setUsername("my_user");
options.setPassword("my_password");
options.setNumMappers(2); // Default value is 4
//options.setSqlQuery("SELECT * FROM user_logs WHERE $CONDITIONS limit 10");
options.setTableName("my_tablename");
options.setWhereClause("my_where_condition");
options.setSplitByCol("my_split_column");

// HBase options
options.setHBaseTable("my_hbase_table_name");
options.setHBaseColFamily("my_column_family");
options.setCreateHBaseTable(false); // Create HBase table, if it does not exist
options.setHBaseRowKeyColumn("COL1,COL2");

int ret = new ImportTool().run(options);

}

}

最佳答案

看一下通过编写自定义PutTransformer扩展http://sqoop.apache.org/docs/1.4.6/SqoopDevGuide.html#_hbase_serialization_extensions中指定的HBase代码。

关于oracle - 使用Sqoop从Oracle导入到HBase时修改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com