HBase 에서 중국어 처리
11183 단어 HBase
2.HBase 에 표를 만 들 었 습 니 다.컨트롤 러 를 통 해 한자 가 포 함 된 데 이 터 를 명령 으로 기록 하려 면 입력 에 성공 하지 못 합 니 다.
3.한 자 를 입력 하려 면 코드 를 통 해 이 루어 질 수 있 습 니 다.여기 서 제 가 사용 하 는 것 은 자바 입 니 다.코드 는 다음 과 같 습 니 다.
/**
* Put
*
* @param tablename
* @param conf
* @throws Exception
*/
public static void insertData(String tableName, HBaseConfiguration conf) {
HTable table = null;
try {
if (table == null) {
table = new HTable(conf, tableName);
}
// time+6 row ,
String rowname = System.currentTimeMillis() / 1000 + "" + CommUtil.getSixRadom();
System.out.println("rowname = " + rowname);
Put p = new Put(Bytes.toBytes(rowname));
p.add("acc".getBytes(), new Long(System.currentTimeMillis()).longValue(), " ".getBytes());
p.add("pwd".getBytes(), new Long(System.currentTimeMillis()).longValue(), "123456".getBytes());
p.add("sex".getBytes(), new Long(System.currentTimeMillis()).longValue(), "1".getBytes());
p.add("age".getBytes(), new Long(System.currentTimeMillis()).longValue(), "2222".getBytes());
table.put(p);
} catch (Exception e) {
e.printStackTrace();
} finally {
CommUtil.HBaseClose(table);
}
}
4、 , :
/**
* HBase
*
* @param tablename
* @param conf
* @param table
*/
public static void scanData(String tableName, HBaseConfiguration conf) {
HTable table = null;
Scan s = null;
ResultScanner scanner = null;
try {
if (table == null) {
table = new HTable(conf, tableName);
}
s = new Scan();
s.addColumn(Bytes.toBytes("acc"));
scanner = table.getScanner(s);
for (Result r = scanner.next(); r != null; r = scanner.next()) {
byte[] value = r.getValue("acc".getBytes());
String m = new String(value);
System.out.println("Found row: " + m);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
scanner.close();
}
}
5.결 과 는 정상 적 인 한자 로 되 돌아 갑 니 다.windows 환경 에서 eclipse 콘 솔 에서 한 자 를 출력 하 는 것 을 말 합 니 다.Liux 에서 먼저 콘 솔 에 한 자 를 출력 하면 운영 체제 의 인 코딩 형식 과 관계 가 있 습 니 다.
6.위의 절 차 를 통 해 알 수 있 듯 이 입력 은 코드 순환 을 통 해 입력 되 는 것 입 니 다.물론 위 에 저 는 입력 한 데이터 내용 일 뿐 입 니 다.파일 내용 을 데이터 로 입력 하려 면 코드 를 수정 하고 jar 패키지 로 만들어 Liux 에서 실행 해 야 합 니 다.hbase 에서 MR 코드 로 데 이 터 를 입력 하 는 것 과 관련 이 있 습 니 다.어떻게 설정 하 는 지 에 대해 서 는 제 가 따로 글 을 써 서 간단하게 설명 하 겠 습 니 다.여 기 는 기본 설정 이 완료 되 었 습 니 다.
7.MR 코드 를 작성 하여 파일 데 이 터 를 읽 고 hbase 표 에 입력 합 니 다.코드 는 다음 과 같 습 니 다.
public class InsertDataToHBase {
public static class InsertDataToHBaseMapper extends Mapper
8.데이터 파일 에 한자 가 있 으 면 UTF-8 의 인 코딩 형식 을 요구 합 니 다.그러면 코드 를 통 해 데이터 내용 을 읽 을 때 중국어 로 표시 할 수 있 습 니 다.데이터 파일 이 windows 에 있다 면 UTF-8 로 전환 하 는 인 코딩 형식 으로 저장 하면 한 자 는 3 비트 의 머리 가 있 습 니 다.이런 데 이 터 를 입력 하면 한자 의 머리 앞 에'?'가 표 시 됩 니 다.이것 은 windows 인 코딩 형식 이 Linux 와 다 르 기 때문이다.이러한 문 제 를 처리 하면 파일 을 Linux 에 복사 하여 다음 과 같은 작업 을 할 수 있 습 니 다.
iconv -f GBK -t UTF-8 gbk.txt -o utf8.bcp
또한 주의해 야 할 것 은 파일 접미사 가 txt 라면 변환 한 후에 도 windows 에서 다시 열 어도 시스템 은 기본적으로 세 자리 의 머리 를 추가 합 니 다.따라서 데이터 파일 은 txt 접미사 로 이름 을 짓 지 않 는 것 을 권장 합 니 다.
9.한 자 를 HBase 에 입력 한 후 명령 으로 다음 과 같이 표시 합 니 다.
1279677870714210 column=acc:, timestamp=1279677870656, value=/xB4/xF3/xBE/xF8/xD5/xD0
ASCII 인 코딩 으로 볼 수 있 으 며,이 내용 들 을 UE 로 복사 해 16 진법 으로 보고,이에 대응 하 는 수정 사항 을 볼 수 있 으 며,최종 적 으로 한자'대 묘수'로 표 시 됩 니 다.
10.정리 해 보면 내용 을 적 게 쓰 고 코드 를 조금 붙 였 습 니 다.여러분 보 세 요.잘못 쓰 거나 의문 이 있 는 부분 이 있 으 면 저 에 게 메 일 을 보 내 주세요[email protected]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Hbase on Amazon EMR에 대한 발판 서버 액세스HBase on EMR 클라이언트 PC의 HBase 클라이언트에서 발판 서버(Bastion Server)를 통해 HBase 서버 접속 정보의 예 서버 public IP private IP private DNS 점프 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.