我正在尝试将数据从hdfs导出到couchbase,我的文件格式有问题。
我的配置:
couchbase服务器2.0
堆栈hadoop cdh4.1.2
sqoop1.4.2(用hadoop2.0.0编译)
couchbase/hadoop连接器(用hadoop2.0.0编译)
当我运行export命令时,我可以很容易地用这种格式导出文件:
id,"value"
或
id,42
或
id,{"key":"value"}
但是当我想应用一个json对象时,它不起作用!
id,{"key1":"value1,"key2":"value2"}
couchbase在base64的第一个逗号处截断了内容,因为现在内容不是正确的json。。。
所以,我的问题是,文件必须如何格式化才能存储为json文档?
我们只能导出密钥/值文件吗?
我想从hdfs中导出json文件,比如cbdocloader,用本地文件系统中的文件。。。
3条答案
按热度按时间m1m5dgzv1#
@mpiffaretti你能发布你的sqoop导出命令吗?我认为每个json对象都应该有自己的键值。
key1 {"dataOne":"ValueOne"}
key2 {"dataTwo":"ValueTwo"}
http://ajanacs.weebly.com/blog 在您的情况下,更改如下日期可能有助于您解决问题。如果你还有什么问题,请告诉我[json][sqoopexport][couchbase]
6mw9ycah2#
我认为最好的办法是把文件转换成制表符分隔的,如果你还在做这个的话。如果你看一下sqoop文档(http://archive.cloudera.com/cdh/3/sqoop/sqoopuserguide.html#_large_objects),有一个选项--fields终止于,允许您指定sqoop拆分字段的字符。
如果传递的是以'\t'结尾的字段和以制表符分隔的文件,它将在json中保留逗号。
mrwjdhj33#
恐怕sqoop的预期行为是将输入文件解析为csv,并使用逗号作为分隔符。您可能需要调整文件格式以转义分隔符或将整个json字符串括起来。我建议您阅读《用户指南》[1]中sqoop如何处理转义分隔符和封闭字符串。
链接:
http://sqoop.apache.org/docs/1.4.2/sqoopuserguide.html#id387098