【问题标题】:Sqoop HDFS to Couchbase: json file formatSqoop HDFS 到 Couchbase:json 文件格式
【发布时间】:2017-06-18 08:26:17
【问题描述】:

我正在尝试将数据从 HDFS 导出到 Couchbase,但我的文件格式有问题。

我的配置:

  • Couchbase 服务器 2.0
  • 堆栈 hadoop cdh4.1.2
  • sqoop 1.4.2(用hadoop2.0.0编译)
  • couchbase/hadoop 连接器(使用 hadoop2.0.0 编译)

当我运行导出命令时,我可以轻松地导出这种格式的文件:

id,"value"

id,42

id,{"key":"value"}

但是当我想应用一个 Json 对象时它不起作用!

id,{"key1":"value1,"key2":"value2"}

内容在第一个逗号处被 couchbase 截断并显示在 base64 中,因为现在内容不是正确的 JSON...

所以,我的问题是文件必须如何格式化才能存储为 json 文档?

我们只能导出一个键/值文件吗?

我想从 HDFS 中导出 json 文件,就像 cbdocloader 使用本地文件系统中的文件...

【问题讨论】:

    标签: json hadoop hdfs couchbase sqoop


    【解决方案1】:

    恐怕这种预期行为是 Sqoop 将您的输入文件解析为 CSV,并以逗号作为分隔符。您可能需要调整文件格式以转义分隔符或包含整个 JSON 字符串。我建议在用户指南 [1] 中阅读 Sqoop 究竟是如何处理转义分隔符和封闭字符串的。

    链接:

    http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#id387098

    【讨论】:

      【解决方案2】:

      我认为最好的办法是将文件转换为制表符分隔,如果您仍在处理此问题。如果您查看 Sqoop 文档 (http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_large_objects),有一个选项 --fields-terminated-by 允许您指定 Sqoop 在哪些字符上拆分字段。

      如果你传递了它 --fields-terminated-by '\t' 和一个制表符分隔的文件,它会在你的 JSON 中保留逗号。

      【讨论】:

        【解决方案3】:

        @mpiffaretti 你能发布你的 sqoop 导出命令吗?我认为每个 JSON 对象都应该有自己的键值。 key1 {"dataOne":"ValueOne"} key2 {"dataTwo":"ValueTwo"} http://ajanacs.weebly.com/blog 在您的情况下,更改如下日期可能会帮助您解决问题。

        id,{"key":"value"}
         id2,{"key2":"value2"}
        

        如果您对此还有其他问题,请告诉我。 [json] [sqoopexport] [couchbase]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-14
          • 1970-01-01
          • 2014-12-25
          • 2012-05-18
          • 2014-11-25
          • 2021-11-08
          • 1970-01-01
          相关资源
          最近更新 更多