美文网首页
2.5sqoop使用除CSV格式外的数据格式

2.5sqoop使用除CSV格式外的数据格式

作者: NEO_X | 来源:发表于2019-05-31 14:10 被阅读0次

    Apache Sqoop Cookbook 英文版-翻译学习!!
    更多信息https://blue-shadow.top/

    问题

    但sqoop默认的以tab键风格的CSV文件,无法满足你的需求,你可能更愿意使用二进制文件格式。

    解决方案

    sqoop支持3种不同格式的文件。一个是文件文件,另外的两个是二进件文件,它们分别是 Avro和Hadoop序列化文件格
    式,你可以使用参数 --as-sequencefile来导入SequenceFile格式的文件:

    sqoop import \
    --connect jdbc:mysql://mysql.example.com/sqoop \
    --username sqoop \
    --password sqoop \
    --tables cities \
    --as-sequencefile
    

    对于avro格式可以使用 参数 *--as-avrodatafile

    sqoop import \
    --connect jdbc:mysql://mysql.example.com/sqoop \
    --username sqoop \
    --password sqoop \
    --table cities \
    --as-avrodatafile
    

    讨论

    相比与文本文件使用二进制文件有一些好处,第一, 二进制格式非常适合存储像PDF和图片这样的二进制文件。
    对于以文本信息存储的数据也很适合使用二进制,但对于通过分隔符的文件文件则不适合。和这些优点在一起的
    有一个缺点,为了能够获取二进制数据中,需要使用额外的功能或额外的功能库。

    --sequence-file 格式一种特殊的Hadoop文件格式,这个格式的文件用于存储对象与实现可写接口,这种
    格式是针对MapReduce定制化的,对于这种格式期望对于每条记录是由两部分组成:键和值。但对于Sqoop并没有
    键值对的概念,因此使用一个空对象nullwritable来代替值。对于键,sqoop使用生成的类,为了便利,这个生成
    的类被拷贝到sqoop被执行的目录下,所以需要在应用程序中集成这个类当需要读取sequence-file格式文件时。

    Apach arvo是通用的可序列话系统,指定 --as arvodatafile 命令参数时,sqoop就会使用紧凑和快速的
    二进制编码格式。arvo是一个非常通用的系统,它可以存储任意的数据格式。它使用一种叫做模式的概念来描述
    在文件中的数据结构,对于这个模式,通常是json编码,这样可以容易被人解读。sqoop将会自动生成基于从数据库
    获取的表元数据信息的模式,并将这种模式保存在每个生成的文件中。所以你的应用程序需要基于avro的库来打开
    avro文件和处理其中的数据。但无需导入其他特定的类,就像在Sequence-file中一样,所有需要的元数据信息
    都已经嵌入到被导入的文件中。

    相关文章

      网友评论

          本文标题:2.5sqoop使用除CSV格式外的数据格式

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