美文网首页
sqoop:导出MySQL数据至Hive时,数据中包含\001或

sqoop:导出MySQL数据至Hive时,数据中包含\001或

作者: 大空翼123 | 来源:发表于2021-12-07 19:44 被阅读0次

场景

使用sqoop从MySQL导出数据至Hive时,如果数据中包含hive指定的列分隔符,如\001 或\t,那么在Hive中就会导致数据错位;如果数据中包含换行符\n,那么就会导致原先的一行数据,在Hive中变成了两行。

解决办法

在sqoop执行时,使用如下参数:

--hive-drop-import-delims导入Hive时,从字符串字段中删除\n、\r和\01。

--hive-delims-replacement导入Hive,将字符串字段中的\n、\r和\01替换为指定字符串。

如:

sqoop-import \

--connect jdbc:mysql://ip:port/databasesName \

--username xxxx \

--password xxxx \

--table tableName\

--target-dir /data/tableDir \ #Hive表在HDFS中的位置

--fields-terminated-by '\001'  \ #指定导入到Hive时的列分割符

-m 1 \  #表明几个Map并行跑

--split-by stat_date \ #拆分数据的字段,假设-m设置为4,数据有100条,sqoop首先会获取拆分字段的最大值,最小值,步长为100/4=25;

--delete-target-dir \ #导入Hive前是否先删除HDFS中的目标目录,相当于overwrite

--hive-delims-replacement ''  #将特殊字符转换成空字符串


Sqoop导入Hive的其他配置项

Argument                                                                         Description

--hive-home                                                           设置$HIVE_HOME的位置,不加则默认使用环境中的$HIVE_HOME

--hive-import                                                           导入表进hive(如果不设置分隔符的话,则使用Hive默认的分隔符。)

--hive-overwrite                                                     导入表进Hive时,覆盖原先的Hive表

--create-hive-table                                                如果Hive表不存在,则自动创建;如果以及存在,则会报错

--hive-table                                                             设置目标Hive表。

--hive-drop-import-delims                                     导入到Hive时,删除原数据中包含的 \n, \r,\01字符。

--hive-delims-replacement                                    导入到Hive时,将原数据中的\n, \r,  \01 替换成自定义的字符。

--hive-partition-key                                                  指定Hive表的分区字段。

--hive-partition-value                                              指定导入Hive表的分区字段的值。

--map-column-hive                                                设置导入Hive时,指定字段的数据类型。如设置ID为Sting类型:--map-column-hive  ID=String

相关文章

  • sqoop:导出MySQL数据至Hive时,数据中包含\001或

    场景 使用sqoop从MySQL导出数据至Hive时,如果数据中包含hive指定的列分隔符,如\001 或\t,那...

  • sqoop数据导出操作

    sqoop的数据导出存在2中方式: 1.直接从hive数据库中导出到mysql等的传统的数据库,导出的效率较高,但...

  • Sqoop安装

    Sqoop是Hadoop生态里,实现Hive、Hbase等大数据数据库与MySQL、Oracle导入导出的工具。其...

  • sqoop数据导出导入命令

    1. 将mysql中的数据导入到hive中 sqoop import --connect jdbc:mysql:/...

  • 导出数据

    在Sqoop中,“导出”概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数...

  • Sqoop抽取数据后核对数据准确性

    Sqoop从MySQL抽取数据,因为数据有更新(新增和更新在Hive中各对应一条记录),所有Hive中的数据会比M...

  • sqoop:导出MySQL数据至Hive时,Null值处理

    Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,直接导入Hive会把nu...

  • BigData~09:Sqoop

    使用 Sqoop 把数据从 Hive 导出到 MySQL,中间遇到了一些坑,现总结如下: 一、报错总结 在 CDH...

  • 137.如何进行离线计算-3

    137.1 数据导出 Sqoop可以对HDFS文件进行导入导出到关系型数据库 Sqoop 工作机制是将导入或导出命...

  • hive增量抽取方案

    一、使用sqoop从mysql中抽取数据到hive,查看sqoop官方文档,有如下两种方案: 示例: 简单说,sq...

网友评论

      本文标题:sqoop:导出MySQL数据至Hive时,数据中包含\001或

      本文链接:https://www.haomeiwen.com/subject/svpaxrtx.html