hive的安装和使用

1、安装MySQL

     查询以前安装的mysql相关包:

     rpm -qa | grep mysql

     

     如果以前有安装,但已经不能正常使用或者想重新安装,则先卸载:

     输入指令,逐个卸载:

    rpm -e mysql-community-client-5.6.41-2.el7.x86_64 --nodeps

    然后进行安装:

    下载:wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

    解压:rpm -ivh mysql-community-release-el7-5.noarch.rpm

    安装:yum install mysql-community-server

2、启动和配置MySQL
    启动:

    systemctl start mysqld.service -- 启动

    systemctl restart mysqld.service -- 重启

    systemctl stop mysqld.service -- 关闭

    systemctl enable mysqld.service -- 开机自启动

    配置MySQL用户密码

    首次登录无密码:mysql -uroot -p

    use mysql;

    update user set password=password("123456") where user="root";

    登录MySQL,创建hive数据库:

    CREATE DATABASE hive;

    命令行配置MySQL:

    GRANT ALL PRIVILEGES ON hive.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

3、安装hive

    到官网下载hive,上传到服务器,然后解压安装:

    tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /home/sparkuser/apps 

    mv /home/sparkuser/apps/apache-hive-2.1.1-bin /home/sparkuser/apps/hive 

    配置环境变量:

    vim /etc/profiles

     添加:

    export HIVE_HOME=/home/sparkuser/apps/hive

    export PATH=$PATH:$HIVE_HOME/bin

    任意目录下输入指令:hive --version 正常显示hive版本时,证明配置成功

4、配置hive:

     hive的配置文件为hive-site.xml,

    进入目录:cd /home/sparkuser/apps/hive/conf

    cp hive-default.xml.template hive-site.xml

    vim hive-site.xml

  

<configuration>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://myspark:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
 </property>
 <property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.jdbc.Driver</value>
   <description>Driver class name for a JDBC metastore</description>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
  <description>username to use against metastore database</description>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
  <description>password to use against metastore database</description>
 </property>
</configuration>

   下载mysql-connector-java-5.1.40-bin.jar并将其放到hive/lib/目录下 

   然后进入/home/sparkuser/apps/hive/bin:

   cd /home/sparkuser/apps/hive/bin

   执行:./schematool -dbType mysql -initSchema

5、启动hive

    命令行输入:hive

6、建表和导入数据

    -- 指定表名为user_info, 字段包括id account name age 分隔符为','。

     create table user_info (id int, account string, name  string, age int) row format delimited fields terminated by ',';

    -- 创建外部表,user_info为表名,文件存储地址为/hive_data。

     create external table user_info (id int, name string) row format delimited fields terminated by ',' location '/hive_data';

     -- 加载本地文件到表(user.txt为文件名)

     load data local inpath './user.txt' overwrite into table user_info; -- 覆盖表数据

     load data local inpath './user.txt' into table user_info; -- 不覆盖表数据

    -- 加载hdfs数据时,去掉以上命令的local即可(/data为hdfs存放数据文件的目录):

     load data inpath '/data' overwrite into table user_info; -- 覆盖表数据

     load data inpath '/data' into table user_info; -- 不覆盖表数据

7、建分区表和导入数据

    -- 表名book,分区author,分隔符'\t'

    create table book (id bigint, name string) partitioned by (author string) row format delimited fields terminated by '\t'; 

    -- 将book.txt文件中的数据导入到book表author='鲁迅'的分区中

    load data local inpath './book.txt' overwrite into table book partition (author='鲁迅');

   -- 删除分区

   ALTER TABLE book DROP PARTITION (author='luxun');

8、hive不支持删除和修改,目前所知的,也不能支持如insert into tmp(id, name)values(1,'andy');之类的操作,只能用insert into tmp select id, name from user_info;这样的语句进行插入。

9、分桶操作

    -- 创建分桶表

    #创建分桶表 以sno分成四个桶
create table stu_buck(sno int,sname string,sex string,sage int,sdept string)
clustered by(sno) 
sorted by(sno DESC)
into 4 buckets
row format delimited
fields terminated by ',';

   

#设置变量,设置分桶为true, 设置reduce数量是分桶的数量个数
set hive.enforce.bucketing = true;
set mapreduce.job.reduces=4;

#开会往创建的分通表插入数据(插入数据需要是已分桶, 且排序的)
#可以使用distribute by(sno) sort by(sno asc)   或是排序和分桶的字段相同的时候使用Cluster by(字段)
#注意使用cluster by  就等同于分桶+排序(sort)
insert into table stu_buck
select sno,sname,sex,sage,sdept from student distribute by(sno) sort by(sno asc);

10、hiveserver2和beeline

      进入hive/bin目录下输入命令:

      前台启动:./hiveserver2

     后台启动:nohup ./hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &

        启动metastore:hive --service metastore

     此时可查看此端口已被监听:netstat -anp|grep 10000:

     

    打开另一个窗口,到hive/bin目录执行:./beeline

    连接:

     !connect jdbc:hive2://myspark:10000

    输入用户名和密码:

    

成功!这里注意:

 如果你安装了spark并配置了SPARK_HOME,此时如果直接输入:beeline,则会打开spark版本的beeline:

此时做连接会报错:Required field 'client_protocol' is unset! 

注:要用hive当然少不了hdfs的支持啦,部署好你的hadoop。

<think>嗯,用户想了解如何在Flutter中安装使用Hive数据库。首先,我需要回忆一下Hive的相关知识,确保信息准确。记得Hive是一个轻量级的NoSQL数据库,适合在移动端使用,特别是因为它不需要native依赖,而且性能不错。 首先,安装部分。用户需要在pubspec.yaml文件中添加依赖项。根据引用[2],应该包括hivehive_flutter,还有dev_dependencies里的hive_generatorbuild_runner。需要确认版本号是否正确,但通常用户可以使用最新版本,所以可以提示他们查看最新版本号,或者直接用^符号让pub自动选择兼容版本。 然后,初始化Hive。引用[1]提到Hive.initFlutter(),这应该是初始化Flutter项目的步骤,通常在main函数里执行。可能需要先确保WidgetsFlutterBinding初始化,所以顺序应该是先调用WidgetsFlutterBinding.ensureInitialized(),然后再初始化Hive。 接下来是创建数据模型。Hive需要注册适配器,所以用户需要定义模型类并用Hive注解标记。比如@HiveType(typeId: 0)@HiveField()。然后运行build_runner生成适配器代码,这部分需要提醒用户使用flutter pub run build_runner build命令,或者使用--watch参数自动监测变化。 之后是打开Box,进行数据操作。打开Box可能需要异步处理,所以示例代码应该用async/await。增删改查的操作相对简单,但需要展示基本的CRUD操作,比如add、get、put、delete等。 还要注意引用[1]提到的Box的listenable()方法,这可能用于监听数据变化,结合Flutter的StreamBuilder来更新UI。不过用户的问题主要是安装使用,这部分可能属于进阶内容,可以稍微提及,但不需要深入。 用户可能需要常见问题解答,比如版本冲突、适配器未注册的错误,或者生成代码时的问题。需要提醒他们检查依赖版本是否兼容,确保适配器已经正确注册,并正确运行生成命令。 现在需要整理步骤,确保结构清晰,按照安装、初始化、模型创建、操作数据的顺序来写。示例代码要正确,特别是Hive.initFlutter()的位置,还有打开Box的方法。另外,引用标记要正确对应到用户提供的引用内容,比如引用[1]引用[2]分别对应初始化添加依赖的部分。 可能还需要检查是否有遗漏的步骤,比如是否需要在main函数里异步初始化,因为Hive的初始化可能是异步的。需要确保示例代码正确处理了这一点,比如在main函数前加async,然后在里面await Hive.initFlutter()。 最后,生成相关问题,要围绕Hive安装使用展开,比如性能优化、数据迁移、与其他数据库对比等。这些问题应该帮助用户进一步深入学习Hive的相关知识。</think>### Flutter Hive 安装使用教程 #### 一、安装依赖 1. **添加依赖项** 在 `pubspec.yaml` 文件的 `dependencies` `dev_dependencies` 中添加以下内容[^2]: ```yaml dependencies: hive: ^[版本号] # 例如 2.2.3 hive_flutter: ^[版本号] dev_dependencies: hive_generator: ^[版本号] build_runner: ^[版本号] ``` 运行 `flutter pub get` 安装依赖。 2. **初始化 Hive** 在 `main.dart` 的 `main` 函数中初始化 Hive[^1]: ```dart void main() async { WidgetsFlutterBinding.ensureInitialized(); await Hive.initFlutter(); // 初始化 Hive runApp(MyApp()); } ``` --- #### 二、创建数据模型 1. **定义数据类** 使用 `@HiveType` `@HiveField` 注解标记模型类: ```dart import 'package:hive/hive.dart'; @HiveType(typeId: 0) class User { @HiveField(0) String name; @HiveField(1) int age; User(this.name, this.age); } ``` 2. **生成适配器** 运行命令生成适配器代码: ```bash flutter pub run build_runner build ``` --- #### 三、使用 Hive 存储数据 1. **打开 Box(数据库表)** ```dart await Hive.openBox('userBox'); // 打开名为 "userBox" 的存储容器 final userBox = Hive.box('userBox'); ``` 2. **增删改查操作** ```dart // 写入数据 userBox.add(User('Alice', 25)); // 读取数据 final user = userBox.getAt(0) as User; print(user.name); // 输出: Alice // 更新数据 userBox.putAt(0, User('Bob', 30)); // 删除数据 userBox.deleteAt(0); ``` --- #### 四、高级功能 1. **监听数据变化** 使用 `listenable()` 监听 Box 变化: ```dart ValueListenableBuilder( valueListenable: Hive.box('userBox').listenable(), builder: (context, box, _) { return Text('数据已更新: ${box.length}'); }, ) ``` --- #### 常见问题 - **版本冲突**:确保所有 Hive 相关包版本一致。 - **适配器未注册**:在初始化后调用 `Hive.registerAdapter(UserAdapter())`。 - **生成代码失败**:检查注解语法,或运行 `flutter pub run build_runner build --delete-conflicting-outputs`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏舟飞流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值