Hive to Redis

本文介绍了如何将Hive中的数据查询出来,转换为JSON文件,并进一步加载到Redis数据库中,包括开发环境的准备、Hive库和Redis库的设置,以及线下Redis环境的部署和测试。
摘要由CSDN通过智能技术生成

开发机环境准备

Hive库
sudo apt-get install libsasl2-dev
sudo pip install pyhive[hive]
Redis库
pip install redis
线下Redis环境的部署(用于测试)
sudo apt-get install redis-server
cd /usr/bin/
./redis-server

Hive数据查询->本地json文件

from pyhive import hive
port = 111
sql = """
    select * from dm_video.ml_media_stats_daily
    where date = "20180820" and stats_type = "all"
    LIMIT 1000 
"""
if __name__ == '__main__':

    print "hello"
    conn = hive.Connection(host='ip地址', port=port, username='chengxianglong', database='dm_video')
    cursor = conn.cursor()
    cursor.execute(sql)

    for result in cursor.fetchall():
策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装起来,使它们可以互相替换。在这种模式下,算法的变化可以独立于使用它们的客户端而变化。 在这个场景下,我们可以定义一个接口 `IDataSync`,并实现其具体的同步策略,例如 `Hive2RedisDataSync`、`Hive2MySQLDataSync`、`Hive2ClickHouseDataSync`、`MySQL2HiveDataSync` 等。这些同步策略都需要实现 `IDataSync` 接口中的同步方法 `syncData`,并实现自己的同步逻辑。 接下来,我们需要一个上下文类 `DataSyncContext`,它包含了一个 `IDataSync` 对象,并提供了一个 `setDataSync` 方法,用于设置当前使用的同步策略。此外,`DataSyncContext` 还需要一个 `syncData` 方法,用于实际进行数据同步,该方法会调用当前使用的同步策略的 `syncData` 方法。 最后,我们可以在客户端中创建 `DataSyncContext` 对象,并设置不同的同步策略,以实现不同种类的数据同步。示例代码如下: ```java // 数据同步接口 interface IDataSync { void syncData(); } // Hive2Redis 数据同步策略 class Hive2RedisDataSync implements IDataSync { @Override public void syncData() { // 实现 HiveRedis 的数据同步逻辑 } } // Hive2MySQL 数据同步策略 class Hive2MySQLDataSync implements IDataSync { @Override public void syncData() { // 实现 Hive 到 MySQL 的数据同步逻辑 } } // Hive2ClickHouse 数据同步策略 class Hive2ClickHouseDataSync implements IDataSync { @Override public void syncData() { // 实现 Hive 到 ClickHouse 的数据同步逻辑 } } // MySQL2Hive 数据同步策略 class MySQL2HiveDataSync implements IDataSync { @Override public void syncData() { // 实现 MySQL 到 Hive 的数据同步逻辑 } } // 数据同步上下文 class DataSyncContext { private IDataSync dataSync; public void setDataSync(IDataSync dataSync) { this.dataSync = dataSync; } public void syncData() { if (dataSync != null) { dataSync.syncData(); } } } // 客户端代码 public class Client { public static void main(String[] args) { DataSyncContext context = new DataSyncContext(); // 使用 Hive2Redis 数据同步策略 context.setDataSync(new Hive2RedisDataSync()); context.syncData(); // 使用 Hive2MySQL 数据同步策略 context.setDataSync(new Hive2MySQLDataSync()); context.syncData(); // 使用 Hive2ClickHouse 数据同步策略 context.setDataSync(new Hive2ClickHouseDataSync()); context.syncData(); // 使用 MySQL2Hive 数据同步策略 context.setDataSync(new MySQL2HiveDataSync()); context.syncData(); } } ``` 通过上述代码,我们可以使用策略模式来实现不同种类的数据同步工具。在客户端代码中,我们可以灵活地切换不同的同步策略,而无需修改原有的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值