hbase使用importtsv导入^a(ctrl a)分隔的文件

zaqlnxep  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(332)

我有一个纯文本文件,行由'\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

但是,我不知道如何将控件传递到 '-Dimporttsv.separator=|' ,我看了一下这个importtsv的源代码。

我对java的理解还不足以理解这一点,我想知道你们中懂java的人能否帮助我将控件a从命令行传递到java类?
谢谢,

gblwokeq

gblwokeq1#

bash , ksh 以及 zsh ,可以使用 $'\x01' :

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") .

相关问题