首页 文章

使用split-by导入Hadoop-Sqoop时没有整数值

提问于
浏览
0

我正在使用Sqoop将数据从memsql导入到Hdfs . 我在Memsql中的源表没有任何整数值,我创建了一个新表,包括一个新列'test'和现有列 .

FOllowing是查询

sqoop import --connect jdbc:mysql:// XXXXXXXXX:3306 / db_name --username XXXX --password XXXXX --query“select closed,extract_date,open,close,cast(floor(rand()* 1000000 as int)as从tble_name测试\ $ CONDITIONS“--target-dir / user / XXXX - split-by test;

这个查询给了我以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'as int'附近使用正确的语法作为test_name from table_name,其中(1 = 0)'在第1行

我也尝试了另一种方式:

sqoop import --connect jdbc:mysql:// XXXXX:3306 / XXXX --username XXXX --password XXXX --query“select closed,extract_date,open,close,ceiling(rand()* 1000000)作为test_name from table_name \ $ CONDITIONS“--target-dir / user / dfsdlf --split-by test;

使用以下查询执行作业,但没有传输数据 . 它表示split-by列是float类型并严格地将其更改为整数类型 .

请帮我这个从float类型更改split-by列为整数类型

1 回答

  • 0

    这个问题似乎主要与使用别名作为--split-by参数有关 . 如果需要在查询中使用特定列,则可以在控制台中从table_name'运行查询'select closed,extract_date,open,close,ceiling(rand()* 1000000),获取列名称控制台中的表,并在--split-by'complete_column_name_from_console'中使用它(这里应该是--split-by' ceiling(rand()* 1000000)') .

相关问题