0

我正在尝试将数据从 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使用本地文件系统中的文件一样......

4

3 回答 3

0

I think your best bet is to convert the files to tab-delimited, if you're still working on this. If you look at the Sqoop documentation (http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_large_objects), there's an option --fields-terminated-by which allows you to specify which characters Sqoop splits fields on.

If you passed it --fields-terminated-by '\t', and a tab-delimited file, it would leave the commas in place in your JSON.

于 2013-05-02T16:57:35.030 回答
0

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

链接:

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

于 2013-01-12T08:30:47.400 回答
0

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

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

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

于 2017-06-18T00:10:49.957 回答