HBase Shell执行scan命令返回结果格式异常问题求助
解决HBase Shell中
scan命令输出格式混乱的问题 我之前也碰到过HBase Shell返回格式错乱的情况,别担心,咱们可以从这几个方向排查解决:
1. 给scan命令添加格式化参数
HBase Shell的scan支持多种参数来调整输出格式,推荐试试这些:
- 指定列并使用字节格式化工具,避免字符串解析错位:
scan 'table_name', {COLUMNS => ['general:bcc', 'general:cc', 'general:from'], FORMATTER => 'org.apache.hadoop.hbase.util.Bytes'} - 如果只是想让输出更规整,也可以用
toString格式化:scan 'table_name', {FORMATTER => 'toString'}
2. 调整终端显示设置
有时候格式混乱只是因为终端窗口宽度不够,导致输出强制换行错位:
- 把终端窗口拉到足够宽,再重新执行
scan命令 - 或者把输出重定向到文件,用文本编辑器打开查看,更清晰:
echo "scan 'table_name'" | hbase shell > scan_result.txt
3. 排查版本与编码问题
- 旧版本的HBase Shell在处理特殊字符(比如你结果里的
@bt2ta)时可能存在格式bug,如果你的HBase版本较老,建议升级到稳定版 - 确认终端的字符编码为UTF-8,避免编码不匹配导致的显示错乱
4. 先测试单条数据输出
用get命令先查看单条Row的数据,判断是表数据本身的问题还是scan的输出格式问题:
get 'table_name', '000001bff3df$94a8a4c0$608812cf'
你提到的混乱输出示例:
ROW COLUMN+CELL
000001bff3df$94a8a4c0$608812cf column=general:bcc, timestamp=1521624689099, value= @bt2ta
000001bff3df$94a8a4c0$608812cf column=general:cc, timestamp=1521624689099, value= @bt2ta
000001bff3df$94a8a4c0$608812cf column=general:from, timestamp=1521624689099, value="Ken Turner" kmturner@flex.net @bt2ta
内容的提问来源于stack exchange,提问作者Rushikesh Garadade
相关产品推荐
相关产品推荐

