1. 程式人生 > >Hive讀取HDFS上面的資料和使用Squirrel客戶端連線Hive

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包都新增進去,放到本地電腦新建的一個目錄裡。

可以測試一下是否成功

現在可以大方使用了