如何将csv文件中的数据从hdfs导出到mysql?

时间:2013-12-12 13:18:17

标签: sqoop

是否可以直接从hdfs导出csv文件数据到mysql或者有其他方法可以使用,请你给我清楚。如果有其他方法可以给我样例代码

3 个答案:

答案 0 :(得分:2)

使用Apache Sqoop可以很容易地实现这一点。我建议您从用户指南中的export chapter开始。

答案 1 :(得分:1)

bin/sqoop export \
  --connect jdbc:mysql://localhost/hadoop \
  --username dbuser \
  --export-dir hdfs/dir/path \
  --table <db_table>

如果数据是制表符分隔的:

bin/sqoop export \
  --connect jdbc:mysql://localhost/hadoop \
  --username dbuser \
  --export-dir hdfs/dir/path \
  --table <db_table> \
  --fields-terminated-by '\t'

答案 2 :(得分:0)

如果您需要从oozie执行此操作,请使用子工作流程调用工作流程:

<workflow-app name="export_to_db" xmlns="uri:oozie:workflow:0.3">
<start to="init-table"/>

<action name="init-table">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>

        <arg>eval</arg>

        <arg>--driver</arg>
        <arg>${jdbcDriver}</arg>

        <arg>--connect</arg>
        <arg>${jdbcUrl}</arg>
        <arg>--username</arg>
        <arg>${dbUser}</arg>
        <arg>--password</arg>
        <arg>${dbPassword}</arg>

        <arg>--query</arg>
        <arg>${createTableSql}</arg>
    </sqoop>

    <ok to="export2db"/>
    <error to="kill"/>
</action>

<action name="export2db">
    <sqoop xmlns="uri:oozie:sqoop-action:0.2">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>

        <arg>export</arg>

        <arg>-Dsqoop.export.statements.per.transaction=${export_statementsPerTransaction}</arg>
        <arg>-Dsqoop.export.records.per.statement=${export_recordsPerBatch}</arg>

        <arg>--driver</arg>
        <arg>${jdbcDriver}</arg>

        <arg>--batch</arg>

        <arg>--num-mappers</arg>
        <arg>${export_numMappers}</arg>

        <arg>--connect</arg>
        <arg>${jdbcUrl}</arg>
        <arg>--username</arg>
        <arg>${dbUser}</arg>
        <arg>--password</arg>
        <arg>${dbPassword}</arg>

        <arg>--input-fields-terminated-by</arg>
        <arg>${export_inputFieldsTerminatedBy}</arg>

        <arg>--export-dir</arg>
        <arg>${exportDir}</arg>

        <arg>--table</arg>
        <arg>${destinationTable}</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>