- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试导入一个以复合键为主键的 Teradata 表。因此设置 --num mapper
1 并在没有 --split-by
参数的情况下运行它。但是,我遇到了以下问题。请帮忙。
Error: java.io.IOException: SQLException in nextKeyValue
at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:277)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:556)
at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata Database] [TeraJDBC 14.00.00.01] [Error 3707] [SQLState 42000] Syntax error, expected something like a name or a Unicode delimited identifier between the word 'Record' and the 'Start' keyword.
at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDatabaseSQLException(ErrorFactory.java:307)
at com.teradata.jdbc.jdbc_4.statemachine.ReceiveInitSubState.action(ReceiveInitSubState.java:102)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.subStateMachine(StatementReceiveState.java:298)
at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:179)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:120)
at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(StatementController.java:111)
at com.teradata.jdbc.jdbc_4.TDStatement.executeStatement(TDStatement.java:372)
at com.teradata.jdbc.jdbc_4.TDStatement.prepareRequest(TDStatement.java:541)
at com.teradata.jdbc.jdbc_4.TDPreparedStatement.<init>(TDPreparedStatement.java:96)
at com.teradata.jdbc.jdk6.JDK6_SQL_PreparedStatement.<init>(JDK6_SQL_PreparedStatement.java:21)
at com.teradata.jdbc.jdk6.JDK6_SQL_Connection.constructPreparedStatement(JDK6_SQL_Connection.java:76)
at com.teradata.jdbc.jdbc_4.TDSession.prepareStatement(TDSession.java:1491)
at org.apache.sqoop.mapreduce.db.DBRecordReader.executeQuery(DBRecordReader.java:101)
最佳答案
你必须使用--split-by
或者 --boundary-query
选项,不管 --num-mappers
或者 -m
选项。
拆分列不一定等于PK。您可以拥有复杂的 PK 和一些 int Split 列。但使用复合键中的一列作为 --split-by
选项。
--split-by
~~> 用于拆分工作单元的表的列
也试试 --boundry-query
+ --split-by
如果以上选项(仅 --split-by
)不起作用:
sqoop import \
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
--username=retail_dba \
--password=cloudera \
--table departments \
--target-dir /user/cloudera/departments \
-m 2 \
--boundary-query "select 2, 8 from departments limit 1" \
--split-by department_id
默认情况下,sqoop 将使用查询 select min(<split-by>), max(<split-by>) from <table name>
找出创建拆分的边界。在某些情况下,此查询不是最佳查询,因此您可以使用 --boundary-query
指定返回两个数字列的任意查询。争论。
关于hadoop - Sqoop 导入没有分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38627074/
当我们使用以下设置时,Sqoop 导入会导致重复/部分记录 --query - 自定义查询 --split-by - 非整数列(字符) --num-mappers - 超过 2 Verified th
我安装了 Hadoop、Hive、HBase、Sqoop 并将它们添加到 PATH 中。 当我尝试执行 sqoop 命令时,出现此错误: Error: Could not find or load m
当我连接到一个集群 ( aaaaaa1 ) 上的 mysql 和不同服务器 ( aaaaaa2 ) 上的 sqooop 时,我收到以下错误,尽管在 mySql 中创建了一个表,并授予另一个集群的完全权
我发现以下命令对于查看我的源数据库的样子非常有用: sqoop-list-databases sqoop-list-tables 但是,似乎没有列出表中列的命令,这将是一个合乎逻辑的步骤。 我现在的问
我很困惑虽然导入库(com.cloudera.sqoop 和 org.apache.sqoop)并在 eclipse 中获取它(包含 jar sqoop-1.4.4-hadoop200.jar)- I
sqoop import命令中$conditions子句的意义是什么? select col1, col2 from test_table where \$CONDITIONS 最佳答案 Sqoop
sqoop import命令中$conditions子句的意义是什么? select col1, col2 from test_table where \$CONDITIONS 最佳答案 Sqoop
我正在使用共享节点集群 Hadoop 2.5.0-cdh5.3.2 请共享要加载的所有兼容版本的 MySql jar 文件的名称以及 HDFS 和 MySQL 之间成功导入和导出的所有路径文件夹。 我
我在Azkaban中使用shell命令,并将Sqoop命令放在shell脚本中。 今天 Sqoop 任务无缘无故卡住了,sqoop_task1。 几天前发生在另一个 sqoop 任务上,我们称它为 s
我已经在计算机上安装了sqoop (来自http://www.apache.org/dist/sqoop/1.4.4/的sqoop-1.4.4.bin__hadoop-1.0.0.tar.gz)。 当
我刚刚下载了Sqoop安装文件sqoop-1.99.3-bin-hadoop100.tar.gz。我无法在其中找到文件 addtowar.sh。我按照此处的安装说明进行操作 - https://sqo
我有一个 Oozie 工作流,它应该每 X 分钟运行一次。它从 HBase 表中读取一个值。在此之后,基于上一步从 HBase 读取的值运行(增量)Sqoop 操作。为了使工作流正常工作,我需要以某种
[cloudera@quickstart ~]$ **sqoop import-all-tables -m=4 --connect "jdbc:mysql://quickstart.cloudera:
我正在使用 hadoop 2.6.0,现在我正在尝试 sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz。我正在使用 sqoop 版本 sqoop version 2
我发现在运行时覆盖 sqoop 作业属性时,我只能覆盖一个属性。 例子1:如果我提交 sqoop job --exec test123 -- --query "select * from test w
如何使用sqoop job自动化sqoop增量导入? 据我所知,sqoop job 会记住最后一个值。如果我们创建一个类似 的 sqoop 作业 sqoop job --create myjob --
我正在尝试使用 sqoop export 将记录从 S3 导出到 Mysql Aurora。 S3 中的数据类型之一是 clob,它的长文本和 XML 文件作为 string 存储在其中。 当我运行我
我正在对由计算量大的自定义查询生成的大型记录集进行原型(prototype)迁移。此查询大约需要 1-2 小时才能在 SQL Developer 中返回结果集 我正在尝试将此查询传递给一个简单的 Sq
谁能告诉我这个命令的输出是什么:这里的 departments 表有默认的 6 行(从 dept_id 2 到 7),然后我向 Mysql db 'retail_db.departments' 表(d
根据 sqoop.apache.org 的说法,Sqoop 2 的功能并不完整,不应该用于生产系统。很公平,有些人可能想在他们的测试环境中测试 Sqoop 2 的新功能。 Cloudera 对 Sqo
我是一名优秀的程序员,十分优秀!