gpt4 book ai didi

mysql - 数据未使用 Sqoop 从 MySql 导入到 Cassandra

转载 作者:行者123 更新时间:2023-11-29 08:22:56 25 4
gpt4 key购买 nike

我在 Linux 计算机上安装了 Cassandra、Sqoop 和 MySql。

1) 在 MySql 中创建一个小表,语法如下。

CREATE TABLE TEST_ONE(
test_id INT NOT NULL AUTO_INCREMENT,
test_title VARCHAR(100) NOT NULL,
PRIMARY KEY ( test_id )
);

2)尝试运行 sudo dse sqoop import 从 MySql 到 Cassandra

sudo dse sqoop import --connect jdbc:mysql://127.0.0.1/test --username {username} --password {password} --verbose --table TEST_ONE --cassandra-keyspace TEST_ONE_KS --cassandra-column-family TEST_ONE_CF --cassandra-row-key id --cassandra-thrift-host 127.0.0.1 --cassandra-create-schema

运行几分钟后,它挂起。如果我们检查后端路径 /var/lib/cassandra/data/ 下的键空间和列族是否存在。但数据没有更新。

无法找出问题所在。

请帮忙。

谢谢阿丘斯

最佳答案

所以我重新创建了你的 mysql 表

mysql> select * from TEST_ONE;
+---------+------------+
| test_id | test_title |
+---------+------------+
| 1 | hi |
| 2 | there |
| 3 | foo |
| 4 | bar |
| 5 | spam |
| 6 | DSE QA |
+---------+------------+
6 rows in set (0.00 sec)

并使用了您的 sqoop 命令(但我打开了调试 cassandra 资源目录中的 log4j-server 文件)

automaton@ip-10-235-42-75:~$ sudo dse/bin/dse sqoop import --connect jdbc:mysql://127.0.0.1/test --username qa --password qapass --verbose --table TEST_ONE --cassandra-keyspace TEST_ONE_KS --cassandra-column-family TEST_ONE_CF --cassandra-row-key id --cassandra-thrift-host 127.0.0.1 --cassandra-create-schema

但是我立刻就明白了

14/01/10 17:09:28 INFO mapreduce.ImportJobBase: Beginning import of TEST_ONE
14/01/10 17:09:29 DEBUG mapreduce.DataDrivenImportJob: Using table class: TEST_ONE
14/01/10 17:09:29 DEBUG mapreduce.DataDrivenImportJob: Using InputFormat: class com.cloudera.sqoop.mapreduce.db.DataDrivenDBInputFormat
14/01/10 17:09:29 DEBUG manager.SqlManager: No connection paramenters specified. Using regular API for making connection.
14/01/10 17:09:29 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: The row-key column specified by --cassandra-row-key is not found in the input.
at org.apache.sqoop.mapreduce.CassandraImportJob.configureOutputFormat(CassandraImportJob.java:133)
at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:195)
at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:475)
at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:108)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57)

你的 cassandra-row-key id 是罪魁祸首,应该是 test_id,改变它,你的 imprt 应该可以工作。您最终会得到下面的结果。

cqlsh> select * from "TEST_ONE_KS"."TEST_ONE_CF";

key | column1 | value
-----+------------+--------
6 | test_title | DSE QA
4 | test_title | bar
3 | test_title | foo
5 | test_title | spam
2 | test_title | there
1 | test_title | hi

关于mysql - 数据未使用 Sqoop 从 MySql 导入到 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18848122/

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