大数据实践(八)--Hive、Pig安装及基本操作

大数据实践(八)–Hive、Pig安装及基本操作

mysql-connector-java-8.0.16.jar

hadoop 2.7.3

hive 2.7.3

pig 0.12.0

一、简介

Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。

Pig和Hive类似,但不是使用SQL语句,使用的是自己的一套Pig Latin语言,可以使用脚本。相比HiveSQL较灵活。Pig为大型数据集的处理提供了更高层次的抽象,当Pig处理数据时,Pig会在后台生成一系列MapReduce操作来执行任务,这个过程对用户来说是透明的,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。

Pig和Hive都将作业转化为MapReduce,区别就像是plsql和sql。

二、Hive安装、使用

1、解压hive,加入环境变量
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH
2、配置Metastore(mysql)

在 Hive 中,表名、表结构、字段名、字段类型、表的分隔符等统一被称为元数据。所有的元数据默认存储在 Hive 内置的 derby 数据库中,但由于 derby 只能有一个实例,也就是说不能有多个命令行客户端同时访问,所以在实际生产环境中,通常使用 MySQL 代替 derby。

将驱动放到hive下的lib目录下

mysql-connector-java-8.0.16.jar

hive-site.xml

进入conf目录下,配置驱动连接

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://ip:3306/hadoop_hive?createDatabaseIfNotExist=true</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>xxx</value>
  </property>

</configuration>

hive-env.sh

在conf目录下配置环境模板

cp hive-env.sh.template hive-env.sh
 HADOOP_HOME=/usr/local/hadoop

初始化元数据库

执行命令初始化元数据。

在mysql中会生成元数据库表。

schematool -dbType mysql -initSchema
3、启动

hive依赖hadoop,启动hive前需要启动hadoop.

通过以下命令就可以启动一个hive shell

$ hive #启动hive

hive> show tables;#输出所有表名

values__tmp__table__1
values__tmp__table__2
values__tmp__table__3
values__tmp__table__4
values__tmp__table__5
values__tmp__table__6


查询、建表

#建表
hive> CREATE TABLE city (
    >     city_id INT   ,
    >     pro_id  INT    ,
    >     name    INT
    > );
OK

#插入数据
hive> INSERT INTO city (city_id, pro_id, name) VALUES (110100, 110000, '北京市');
#打印日志可以看到将数据存储到hdfs
OK

#输出
>select * from city;
#中文表示null,通过load加载文件却能显示中文


hive>  CREATE TABLE emp(
    >      empno INT,     -- 员工表编号
    >      ename STRING,  -- 员工姓名
    >      job STRING,    -- 职位类型
    >      mgr INT,   
    >      hiredate TIMESTAMP,  --雇佣日期
    >      sal DECIMAL(7,2),  --工资
    >      comm DECIMAL(7,2),
    >      deptno INT)   --部门编号
    >     ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";
OK
Time taken: 2.936 seconds

#加载结构化文件
hive> LOAD DATA LOCAL INPATH "/usr/local/file/emp.txt" OVERWRITE INTO TABLE emp;

#此时中文字符显示
hive> select * from emp where empno=0;
OK
0	李四	CLERK	7782	1982-01-23 00:00:00	1300.00	NULL	10
Time taken: 3.116 seconds, Fetched: 1 row(s)

hdfs存储

在hdfs文件系统中可以看到hive的文件存储。

>hdfs dfs -ls /user/hive
Found 1 items
drwxr-xr-x   - cgl supergroup          0 2020-11-10 09:52 /user/hive/warehouse



hive-hdfs

在hive shell中,可以直接使用hdfs的命令,还可以略去hdfs。

hive>  dfs -ls /;
Found 5 items
drwxr-xr-x   - cgl supergroup          0 2020-11-06 16:44 /data
drwxrwxrwx   - cgl supergroup          0 2020-11-06 16:18 /hadoop
drwxr-xr-x   - cgl supergroup          0 2020-11-14 11:37 /tmp
drwxr-xr-x   - cgl supergroup          0 2020-11-14 11:36 /user

hiveserver2

将Hive当做一个服务启动(类似MySQL数据库,启动一个服务)

可以使用两种方式连接到hive
1、bin/beeline
2、JDBC/ODBC方式,类似MySQL中JDBC/ODBC方式

beeline方式:

hive将sql转化为MapReduce,很方便。

$ beeline -u jdbc:hive2://localhost:10000  -n username -p password 

三、Pig安装、使用

1、解压安装
解压、加入环境变量。
pig可以在本地运行,不需要其他依赖,适合测试和计算少量数据。
pig -x local 在本地启动一个shell

2、基本操作

local启动

#本地启动,测试
>pig -x local
#加载本地的文件到表中,表指定字段名和类型
grunt> spark_table = LOAD '/usr/local/SparkDemo.txt' USING PigStorage(' ') AS (col_1:chararray,col_2:chararray,col_3:chararray);

#查询表,类似select 
grunt> dump spark_table;
(java,hadoop,spark)
(spark,hadoop,java)
(hive,mysql,)
(hadoop,Spark,hive)
(Spark,Flink,hadoop)
(java,scala,hadoop)
(SparkHadoopJava,,)

#分页
grunt>spark_limit = limit spark_table 3;
grunt>dump spark_limit;

(hive,mysql,)
(java,hadoop,spark)
(spark,hadoop,java)

#查询字段
grunt>col_1 = foreach spark_table generate col_1;
grunt> dump col_1; 
(java)
(spark)
(hive)
(hadoop)
(Spark)
(java)
(SparkHadoopJava)

hdfs

配置了Hadoop环境,那么则不需要在pig环境中作其他配置了。

使用pig启动的grunt 的shell,此时执行的操作会变成MR.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值