Kettle连接Hive 中文乱码问题解决方案
刚开始接触Pentaho的 kettle desktop版本。我们这里主要应用其与hadoop及 hive 的关联进行数据处理。 kettle 的版本是4.4,使用的过程还是挺顺利的,顺利的建立好了一个转换任务,将 hive 中的数据提取到了本地文件。但是打开一看,所以 utf8 的 中文 全都是
刚开始接触Pentaho的kettle desktop版本。我们这里主要应用其与hadoop及hive的关联进行数据处理。kettle的版本是4.4,使用的过程还是挺顺利的,顺利的建立好了一个转换任务,将hive中的数据提取到了本地文件。但是打开一看,所以utf8的中文全都是乱码。而且kettle现在只支持到了hive0.7版本,还没支持到0.8,所以无法正确提取hive的meta信息,但是不影响HQL的正常运行。
只能先看看kettle是如何使用hive的jdbc连接的。我先将hive-jdbc.0.8.1.ar拷贝到{kettlehome}/libext/JDBC下,直接造成无法正常连接hive。
在该目录下存在jar文件hive-jdbc-0.7.0-pentaho-1.0.2.jar,这个类是一个适配类,不真正实现hive的jdbc连接。
而是通过反射的方式,找到classpath下的hivejdbc类,即存在于{kettlehome}\plugins\pentaho-big-data-plugin\hadoop-configurations\hadoop-20\lib\hive-jdbc-0.7.0-pentaho-1.0.2.jar这个jar文件,该文件用于真实的调用hive。
我们就来看一下这个jar中的实现。可以先从以下url中获取source文件。http://repo.pentaho.org/artifactory/repo/org/apache/hive/hive-jdbc/0.7.0-pentaho-1.0.2/hive-jdbc-0.7.0-pentaho-1.0.2-sources.jar 下载解压后,倒入到你自己的一个新建java工程中,并引入相关的类库,可以使之正常编译。
StructObjectInspector soi = (StructObjectInspector) serde.getObjectInspector();List fieldRefs = soi.getAllStructFieldRefs();//Object data = serde.deserialize(new BytesWritable(rowStr.getBytes()));//我们将该行屏蔽Object data = serde.deserialize(new BytesWritable(rowStr.getBytes("UTF-8")));//使用本行
然后将编译后的class文件加入到hive-jdbc-0.7.0-pentaho-1.0.2.jar
重新启动kettle。
然后再跑一下流程,正常了。当然,如果你的系统环境本身编码就是utf8的,应该不会出现这样的问题。
原文地址:Kettle连接Hive 中文乱码问题解决方案, 感谢原作者分享。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Call of Duty Warzone은 새로 출시된 모바일 게임입니다. 많은 플레이어들이 이 게임의 언어를 중국어로 설정하는 방법에 대해 매우 궁금해하고 있습니다. 실제로 플레이어는 중국어 언어 팩만 다운로드하면 됩니다. 사용 후 수정하세요. 자세한 내용은 이 중국어 설정 방법 소개에서 배울 수 있습니다. 모바일 게임 Call of Duty: Warzone의 중국어 언어 설정 방법 1. 먼저 게임에 접속한 후 인터페이스 오른쪽 상단에 있는 설정 아이콘을 클릭합니다. 2. 나타나는 메뉴바에서 [다운로드] 옵션을 찾아 클릭하세요. 3. 이 페이지에서 [SIMPLIFIEDCHINESE](중국어 간체)를 선택하여 중국어 간체 설치 패키지를 다운로드합니다. 4. 설정으로 돌아가기

중국어 VSCode 설정: 전체 가이드 소프트웨어 개발에서 Visual Studio Code(줄여서 VSCode)는 일반적으로 사용되는 통합 개발 환경입니다. 중국어를 사용하는 개발자의 경우 VSCode를 중국어 인터페이스로 설정하면 작업 효율성이 향상될 수 있습니다. 이 기사에서는 VSCode를 중국어 인터페이스로 설정하는 방법을 자세히 설명하고 특정 코드 예제를 제공하는 완전한 가이드를 제공합니다. 1단계: 언어 팩을 다운로드하고 설치합니다. VSCode를 연 후 왼쪽을 클릭합니다.

C++의 기계 학습 알고리즘이 직면하는 일반적인 과제에는 메모리 관리, 멀티스레딩, 성능 최적화 및 유지 관리 가능성이 포함됩니다. 솔루션에는 스마트 포인터, 최신 스레딩 라이브러리, SIMD 지침 및 타사 라이브러리 사용은 물론 코딩 스타일 지침 준수 및 자동화 도구 사용이 포함됩니다. 실제 사례에서는 Eigen 라이브러리를 사용하여 선형 회귀 알고리즘을 구현하고 메모리를 효과적으로 관리하며 고성능 행렬 연산을 사용하는 방법을 보여줍니다.

PHP로 작성한 중국어 왜곡 문자를 txt 파일로 해결하는 방법 인터넷의 급속한 발전과 함께 널리 사용되는 프로그래밍 언어인 PHP를 점점 더 많은 개발자가 사용하고 있습니다. PHP 개발에서는 중국어 내용이 포함된 txt 파일을 포함하여 텍스트 파일을 읽고 써야 하는 경우가 많습니다. 그러나 인코딩 형식 문제로 인해 때때로 작성된 중국어가 깨져서 나타날 수 있습니다. 이 기사에서는 PHP로 txt 파일에 작성된 중국어 문자 왜곡 문제를 해결하는 몇 가지 기술을 소개하고 구체적인 코드 예제를 제공합니다. PHP, 텍스트의 문제 분석

1. 이어폰을 이어폰 상자에 넣고 뚜껑을 열어둔 상태로 상자의 버튼을 길게 눌러 이어폰 페어링 상태로 들어갑니다. 2. 음악 감상 기능을 켜고 블루투스 헤드폰을 선택하거나, 시계 설정 기능에서 블루투스 헤드폰을 선택하세요. 3. 성공적으로 페어링하려면 시계에서 헤드셋을 선택하세요.

블루투스 컨트롤러를 Gohan Arcade에 연결하는 방법은 무엇입니까? 손오공 게임센터는 많은 모바일 게임 플레이어들이 사용하는 게임 박스로, 다수의 인기 게임 리소스와 풍부한 게임 관련 기능을 담고 있습니다. 아래에서는 게임 컨트롤러 연결 방법을 소개하겠습니다. 1. 먼저 Gohan Game Center APP 홈페이지로 이동한 후 홈페이지 오른쪽 하단에 있는 "내" 옵션을 클릭합니다. 2. 내 페이지에서 [컨트롤러] 기능을 찾으면 위치가 그림에 표시됩니다. 3. 선택하여 켜십시오. 휴대폰의 Bluetooth 기능의 경우 컨트롤러의 전원이 켜져 있는지 확인하십시오. 4. 마지막으로 컨트롤러의 지침에 따라 일치하는 연결을 만드십시오. 접속에 성공하면 모바일 게임을 이용하여 다양한 게임을 체험할 수 있습니다.

Linux 터미널에서 문자가 깨지는 문제를 해결하는 방법 Linux 시스템을 사용할 때 터미널에 표시되는 텍스트가 깨져서 터미널을 사용할 때 불편을 겪게 되며 적절한 시기에 처리해야 합니다. 이 기사에서는 일반적인 Linux 터미널 왜곡 문제를 처리하는 방법을 소개하고 특정 코드 예제를 제공합니다. 문제 1: 터미널에서 한자가 깨졌습니다. 터미널에서 한자가 깨졌을 경우 일반적으로 터미널의 잘못된 문자 인코딩 설정으로 인해 발생합니다. 터미널의 문자 인코딩 설정을 수정하여 이 문제를 해결할 수 있습니다. #현재 터미널 보기

Java 프레임워크 보안 취약성을 분석한 결과 XSS, SQL 주입 및 SSRF가 일반적인 취약성인 것으로 나타났습니다. 솔루션에는 보안 프레임워크 버전 사용, 입력 유효성 검사, 출력 인코딩, SQL 주입 방지, CSRF 보호 사용, 불필요한 기능 비활성화, 보안 헤더 설정이 포함됩니다. 실제 사례에서는 프레임워크 버전을 업데이트하고 OGNL 표현식 검사 도구를 사용하면 ApacheStruts2OGNL 주입 취약점을 해결할 수 있습니다.
