我有一个纯文本文件,行用'\ 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类?
谢谢,
最佳答案
使用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")
。