我有一个纯文本文件,行由' \ 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的源代码。
我并不认为Java足够聪明,想知道是否有人知道Java是否可以帮助我将控件A从命令行传递给Java类?
谢谢,
答案 0 :(得分:1)
使用bash
,ksh
和zsh
,您可以使用$'\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")
。