Hive讀取HDFS上面的資料和使用Squirrel客戶端連線Hive
一、把資料從HDFS匯入到hive的表裡
前面已經測試了利用Sqoop把資料從SQL Server匯入到hdfs中,但是分成了好多小檔案,正在思考如何把很多小檔案一起匯入到hive裡面,突然想到可以用*來代替啊。
1.建表
在hive裡面建立好對應的表格
create table sites(xxx int,xxx string,xxx timestamp)
row format delimited fields terminated by ','
lines terminated by '\n' stored as textfile;
2.導數
load data inpath 'hdfs://192.168.116.10:9000/sqoop/hdfs/*'into table sites;
(如果是在本地的,load data local inpath '/usr/local/src/xxx.txt' into table xxx)
3.查詢看看,有資料了
上面雖然成功的查到有資料已經匯入了,但是我想看看有多少資料,在使用select count(1) from sites;
的時候報錯了。Job Submission failed with exception 'java.lang.IllegalArgumentException(Wrong FS: file://=/usr/local/src/apache-hive-1.2.1-bin/lib/*, expected: file:///)'
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
百度和谷歌了一天都沒結果,後來在這裡找到了答案,原來時候配置問題,需要引入第三方jar。我改成,這裡不能有空格各種,如果沒有hbase的jar,就去hbase裡面複製到這裡來。
<property> <name>hive.aux.jars.path</name> <value>file:///usr/local/src/apache-hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar,file:///usr/local/src/apache-hive-1.2.1-bin/lib/protobuf-java-2.5.0.jar,file:///usr/local/ src/apache-hive-1.2.1-bin/lib/zookeeper-3.4.6.jar,file:///usr/local/src/apache-hive-1.2.1-bin/lib/guava-14.0.1.jar,file:///usr/local/src/apache-hive-1.2.1-bin/lib/hbase-client-1. 2.6.jar,file:///usr/local/src/apache-hive-1.2.1-bin/lib/hbase-common-1.2.6.jar</value> <description>The location of the plugin jars that contain implementations of user defined functions and serdes.</description> </property>
改完還是報錯,最後才發現原來是配置hive-env.sh的時候,多寫了一個等號。。。。。。。。。,淚目,,原來我之前就已經引入第三方jar包了。。
二、使用squirrel客戶端連線hive
到這裡下載squirrel客戶端,下載下來是jar格式的,直接點選下一步,一步步安裝就行。前提是電腦已經安裝好java8環境了。
到Linux裡面檢查hiveserver2是否開啟,在客戶端輸入hiveserver2,彈出OK即可。
開啟squirrel客戶端,新增連線:
這裡的增加把Hadoop的share裡面lib和hive裡面的lib資料夾下面的jar包都新增進去,放到本地電腦新建的一個目錄裡。
可以測試一下是否成功
現在可以大方使用了