日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Hive如何加載GBK編碼的數(shù)據(jù)庫(kù) (hive加載gbk數(shù)據(jù)庫(kù))

在使用Hive進(jìn)行數(shù)據(jù)處理的過(guò)程中,常常會(huì)遇到需要加載GBK編碼的數(shù)據(jù)庫(kù)的情況。由于Hive默認(rèn)使用的是UTF-8編碼,因此需要一些額外的步驟來(lái)進(jìn)行GBK編碼的數(shù)據(jù)庫(kù)加載。本文將介紹。

成都做網(wǎng)站、網(wǎng)站建設(shè),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向超過(guò)千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

一、創(chuàng)建GBK編碼的數(shù)據(jù)庫(kù)

在Hive中創(chuàng)建一個(gè)GBK編碼的數(shù)據(jù)庫(kù)有兩種方法:通過(guò)Hive的CLI命令行和通過(guò)Hue的Web UI界面。

1. 通過(guò)Hive的CLI命令行

步驟如下:

1) 打開(kāi)Hive的CLI命令行

2) 輸入以下命令創(chuàng)建一個(gè)GBK編碼的數(shù)據(jù)庫(kù):

CREATE DATABASE dbname CHARACTER SET gbk;

其中,dbname為要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱。

3) 可以使用以下命令查看所有數(shù)據(jù)庫(kù)的字符集設(shè)置:

SHOW DATABASES;

2. 通過(guò)Hue的Web UI界面

步驟如下:

1) 打開(kāi)Hue的Web UI界面

2) 在左側(cè)導(dǎo)航欄中選擇“Hive”菜單

3) 在頁(yè)面上方的菜單欄選擇“查詢”選項(xiàng)卡

4) 輸入以下命令創(chuàng)建一個(gè)GBK編碼的數(shù)據(jù)庫(kù):

CREATE DATABASE dbname CHARACTER SET gbk;

其中,dbname為要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱。

5) 可以使用以下命令查看所有數(shù)據(jù)庫(kù)的字符集設(shè)置:

SHOW DATABASES;

二、配置Hive支持GBK編碼

在Hive默認(rèn)情況下,使用UTF-8編碼進(jìn)行數(shù)據(jù)處理。如果需要支持GBK編碼,需要進(jìn)行一些額外的配置。

1. 修改Hive配置文件

打開(kāi)Hive的配置文件hive-site.xml,添加以下配置:

hive.input.format

org.apache.hadoop.hive.ql.io.HiveInputFormat

use the correct input format

hive.default.fileformat

TextFile

default file format

mapred.input.dir.recursive

true

Recursively read files in input directory

mapred.output.compress

false

Do not compress output data

mapred.output.compress.codec

org.apache.hadoop.io.compress.DefaultCodec

Use the default compression codec

io.file.buffer.size

131072

Set file buffer size in bytes

hive.mapred.supports.subdirectories

true

Let input/output dirs be recursively scanned

hive.mapred.supports.label.multiple.inputs

true

Support multiple inputs with different formats for a given job

2. 復(fù)制GBK編碼的字符集庫(kù)到Hive的lib目錄

在GBK編碼的系統(tǒng)中,可以通過(guò)以下命令復(fù)制GBK編碼的字符集庫(kù)到Hive的lib目錄:

cp /usr/share/java/mysql-connector-java-5.1.45.jar /usr/local/hive/lib/

其中,mysql-connector-java-5.1.45.jar為要復(fù)制的字符集庫(kù)文件名。

三、使用Hive加載GBK編碼的數(shù)據(jù)

1. 創(chuàng)建Hive表

使用以下命令創(chuàng)建一個(gè)Hive表:

CREATE TABLE test (

id INT,

name STRING

)

ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.OpenCSVSerde’

WITH SERDEPROPERTIES (

“separatorChar” = “,”,

“quoteChar” = “\'”,

“escapeChar” = “\\”

)

STORED AS TEXTFILE;

其中,test為表名稱。

2. 加載GBK編碼的數(shù)據(jù)

使用以下命令加載GBK編碼的數(shù)據(jù)到Hive表中:

LOAD DATA LOCAL INPATH ‘/path/to/gbk_data.csv’ INTO TABLE test;

其中,/path/to/gbk_data.csv為要加載數(shù)據(jù)的文件路徑。

3. 查看數(shù)據(jù)

可以使用以下命令查詢加載的數(shù)據(jù):

SELECT * FROM test;

四、

本文介紹了如何在Hive中加載GBK編碼的數(shù)據(jù)庫(kù)。需要注意的是,在Hive中對(duì)GBK編碼的支持需要進(jìn)行一些額外的配置,包括修改Hive配置文件和復(fù)制字符集庫(kù)文件到Hive的lib目錄。在加載GBK編碼的數(shù)據(jù)時(shí),需要使用LOAD DATA命令進(jìn)行加載。

相關(guān)問(wèn)題拓展閱讀:

  • windows下怎么用python連接hive數(shù)據(jù)庫(kù)

windows下怎么用python連接hive數(shù)據(jù)庫(kù)

由于版本的不同,Python 連接 Hive 的方式也就不一樣。

在網(wǎng)上搜索關(guān)鍵字 python hive 的時(shí)候可以找譽(yù)察到一些解決方案。大部分是這彎畢樣的,首先把hive 根目錄埋虛芹下的$HIVE_HOME/lib/py拷貝到 python 的庫(kù)中,也就是 site-package 中,或者干脆把新寫的 python 代碼和拷貝的 py 庫(kù)放在同一個(gè)目錄下,然后用這個(gè)目錄下提供的 thrift 接口調(diào)用。示例也是非常簡(jiǎn)單的。類似這樣:

import sys

from hive_service import ThriftHive

from hive_service.ttypes import HiveServerException

from thrift import Thrift

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

def hiveExe(sql):

try:

transport = TSocket.TSocket(‘127.0.0.1’, 10000)

transport = TTransport.TBufferedTransport(transport)

protocol = TBinaryProtocol.TBinaryProtocol(transport)

client = ThriftHive.Client(protocol)

transport.open()

client.execute(sql)

print “The return value is : ”

print client.fetchAll()

print “…………”

transport.close()

except Thrift.TException, tx:

print ‘%s’ % (tx.message)

if __name__ == ‘__main__’:

hiveExe(“show tables”)

或者是這樣的:

#!/usr/bin/env python

import sys

from hive import ThriftHive

from hive.ttypes import HiveServerException

from thrift import Thrift

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

try:

transport = TSocket.TSocket(‘14.18.154.188’, 10000)

transport = TTransport.TBufferedTransport(transport)

protocol = TBinaryProtocol.TBinaryProtocol(transport)

client = ThriftHive.Client(protocol)

transport.open()

client.execute(“CREATE TABLE r(a STRING, b INT, c DOUBLE)”)

client.execute(“LOAD TABLE LOCAL INPATH ‘/path’ INTO TABLE r”)

client.execute(“SELECT * FROM test1”)

while (1):

row = client.fetchOne()

if (row == None):

break

print rowve

client.execute(“SELECT * FROM test1”)

print client.fetchAll()

transport.close()

except Thrift.TException, tx:

print ‘%s’ % (tx.message)

但是都解決不了問(wèn)題,從 netstat 中查看可以發(fā)現(xiàn) TCP 連接確實(shí)是建立了,但是不執(zhí)行 hive 指令。也許就是版本的問(wèn)題。

還是那句話,看各種中文博客不如看官方文檔。

項(xiàng)目中使用的 hive 版本是0.13,此時(shí)此刻官網(wǎng)的最新版本都到了1.2.1了。中間間隔了1.2.0、1.1.0、1.0.0、0.14.0。但是還是參考一下官網(wǎng)的方法試試吧。

首先看官網(wǎng)的 setting up hiveserver2

可以看到啟動(dòng) hiveserver2 可以配置更大最小線程數(shù),綁定的 IP,綁定的端口,還可以設(shè)置認(rèn)證方式。(之前一直不成功正式因?yàn)檫@個(gè)連接方式)然后還給了 python 示例代碼。

import pyhs2

with pyhs2.connect(host=’localhost’,

port=10000,

authMechani=”PLAIN”,

user=’root’,

password=’test’,

database=’default’) as conn:

with conn.cursor() as cur:

#Show databases

print cur.getDatabases()

#Execute query

cur.execute(“select * from table”)

#Return column info from query

print cur.getSchema()

#Fetch table results

for i in cur.fetch():

print i

在拿到這個(gè)代碼的時(shí)候,自以為是的把認(rèn)證信息給去掉了。然后運(yùn)行發(fā)現(xiàn)跟之前博客里介紹的方法結(jié)果一樣,建立了 TCP 連接,但是就是不執(zhí)行,也不報(bào)錯(cuò)。這是幾個(gè)意思?然后無(wú)意中嘗試了一下原封不動(dòng)的使用上面的代碼。結(jié)果可以用。唉。。。

首先聲明一下,hive-site.xml中默認(rèn)關(guān)于 hiveserver2的配置我一個(gè)都沒(méi)有修改,一直是默認(rèn)配置啟動(dòng) hiveserver2。沒(méi)想到的是默認(rèn)配置是有認(rèn)證機(jī)制的。

然后再寫一點(diǎn),在安裝 pyhs2的時(shí)候還是遇到了點(diǎn)問(wèn)題,其實(shí)還是要看官方文檔的,我只是沒(méi)看官方文檔直接用 pip安裝導(dǎo)致了這個(gè)問(wèn)題。安裝 pyhs2需要確定已經(jīng)安裝了幾個(gè)依賴包。直接看在 github 上的 wiki 吧。哪個(gè)沒(méi)安裝就補(bǔ)上哪一個(gè)就好了。

To install pyhs2 on a clean CentOS 6.4 64-bit desktop….

(as root or with sudo)

get ez_setup.py from

python ez_setup.py

easy_install pip

yum install gcc-c++

yum install cyrus-sasl-devel.x86_64

yum install python-devel.x86_64

pip install pyhs

寫了這么多,其實(shí)是在啰嗦自己遇到的問(wèn)題。下面寫一下如何使用 python

連接 hive。

python 連接 hive 是基于 thrift 完成的。所以需要服務(wù)器端和客戶端的配合才能使用。

在服務(wù)器端需要啟動(dòng) hiveserver2 服務(wù),啟動(dòng)方法有兩種, 第二種方法只是對(duì)之一種方法的封裝。

1. $HIVE_HOME/bin/hive –server hiveserver2

2. $HIVE_HOME/bin/hiveserver21212

默認(rèn)情況下就是hiveserver2監(jiān)聽(tīng)了10000端口。也可以通過(guò)修改 hive-site.xml 或者在啟動(dòng)的時(shí)候添加參數(shù)來(lái)實(shí)現(xiàn)修改默認(rèn)配置。

另外一方面,在客戶端需要安裝 python 的依賴包 pyhs2。安裝方法在上面也介紹了,基本上就是用 pip install pyhs2,如果安裝不成功,安裝上面提到的依賴包就可以了。

最后運(yùn)行上面的示例代碼就可以了,配置好 IP 地址、端口、數(shù)據(jù)庫(kù)、表名稱就可以用了,默認(rèn)情況下認(rèn)證信息不需要修改。

另外補(bǔ)充一點(diǎn) fetch 函數(shù)執(zhí)行速度是比較慢的,會(huì)把所有的查詢結(jié)果返回來(lái)??梢钥匆幌?pyhs2 的源碼,查看一下還有哪些函數(shù)可以用。下圖是 Curor 類的可以使用的函數(shù)。

一般 hive 表里的數(shù)據(jù)比較多,還是一條一條的讀比較好,所以選擇是喲功能 fetchone函數(shù)來(lái)處理數(shù)據(jù)。fetchone函數(shù)如果讀取成功會(huì)返回列表,否則 None。可以把示例代碼修改一下,把 fetch修改為:

count = 0

while (1):

row = cur.fetchone()

if (row is not None):

count += 1

print count, row

else:

print “it’s over”

關(guān)于hive加載gbk數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開(kāi)通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開(kāi)發(fā)老牌服務(wù)商!微信小程序開(kāi)發(fā),APP開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷推廣服務(wù)眾多企業(yè)。電話:028-86922220


網(wǎng)站標(biāo)題:Hive如何加載GBK編碼的數(shù)據(jù)庫(kù) (hive加載gbk數(shù)據(jù)庫(kù))
本文URL:http://www.5511xx.com/article/dpidpdp.html