hive中字段注释中中文出现乱码的问题
在hive中创建一个带中文注释的表,如
create table mytest4(id int COMMENT '学号',name string COMMENT '姓名');
然后用Hive JDBC去读表信息时候,取出来的字段注释是乱码。
hive的表信息存在mysql库中。
这个问题的解决需要做到下面几点:
数据库hive的编码设为UTF8
将表column_v2中字段comment的编码设为UTF8
hive中的数据库URL中指明使用UTF8。如
jdbc
//dev2.com/hive?createDatabaseIfNotExist=true&characterEncoding=utf-8
- 修改DDLTask.java
将
if (tbl.isView()) {
String createTab_stmt = "CREATE VIEW `" + tableName + "` AS " + tbl.getViewExpandedText();
outStream.write(createTab_stmt.getBytes());
改为
if (tbl.isView()) {
String createTab_stmt = "CREATE VIEW `" + tableName + "` AS " + tbl.getViewExpandedText();
outStream.writeUTF(createTab_stmt);
将
outStream.write(createTab_stmt.render().getBytes());
改为
outStream.writeUTF(createTab_stmt.render());
还没有评论,来说两句吧...