Hbase使用importTsv导入^ A(CTRL A)分隔文件

时间:2014-06-12 16:11:40

标签: java shell hbase mapper

我有一个纯文本文件,行由' \ n'分隔。和列由' ^ A'分隔,这是一个非打印字符。我需要将此文件加载到HBase,我遇到了工具importtsv,这似乎可以做我需要的。

到目前为止,我做了一些研究并弄明白:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.columns=col1,col2,col3 \
-Dimporttsv.skip.bad.lines=true \
'-Dimporttsv.separator=|' \
-Dmapred.job.name=job_name \
user_action_log \
/data2/result

但是,我不知道如何将控件A传递到'-Dimporttsv.separator=|',我查看了此ImportTsv here的源代码。

enter image description here

我并不认为Java足够聪明,想知道是否有人知道Java是否可以帮助我将控件A从命令行传递给Java类?

谢谢,

1 个答案:

答案 0 :(得分:1)

使用bashkshzsh,您可以使用$'\x01'传递Ctrl-A字符:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv \
  -Dimporttsv.columns=col1,col2,col3 \
  -Dimporttsv.skip.bad.lines=true \
  -Dimporttsv.separator=$'\x01' \
  -Dmapred.job.name=job_name \
  user_action_log \
  /data2/result

对于posix sh,您可以使用$(printf "\x01")