Sqoop导出到MySQL,不同的列顺序

时间:2015-10-30 17:15:43

标签: mysql hadoop sqoop

我正在尝试从HDFS上的表导出sqoop到MySQL服务器。列的顺序不同。

我的sqoop脚本是:

<workflow-app name="sqoop" xmlns="uri:oozie:workflow:0.4">
    <start to="sqoop"/>
    <action name="sqoop">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
              <arg>export</arg>
              <arg>--connect</arg>
              <arg>jdbc:mysql://10.1.1.1:501/db_name</arg>
              <arg>--username</arg>
              <arg>sqoop</arg>
              <arg>--password-file</arg>
              <arg>/user/sqoop.password</arg>
              <arg>--table</arg>
              <arg>table_name</arg>
              <arg>--export-dir</arg>
              <arg>/user/location</arg>
              <arg>-m</arg>
              <arg>5</arg>
              <arg>--input-fields-terminated-by</arg>
              <arg>\001</arg>
              <arg>--input-null-non-string</arg>
              <arg>\\N</arg>
              <arg>--input-null-string</arg>
              <arg>\\N</arg>
              <arg>--columns</arg>
              <arg>col_1,col_2,col_3</arg>            
            </sqoop>        
            <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>

我的HDFS表创建为:

CREATE EXTERNAL TABLE `table_name`(
  `col_2` bigint, 
  `col_1` bigint, 
  `col_3` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://nameservice1/user/location'

我收到以下错误:

  Caused by: java.lang.NumberFormatException: For input string: "AA"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

我尝试导出到具有完全相同顺序的表,并从sqoop脚本中删除--columns选项,一切正常。是否不可能将sqoop扩展到具有不同顺序的列?

2 个答案:

答案 0 :(得分:0)

看看这个,Sqoop User Guide

答案 1 :(得分:0)

在sqoop导出的--columns参数中,您必须按它们在Hive中的顺序指定列:

-列“ col_2,col_1,col_3”