hadooppythonsql_半小时搞定Hadoop+Mysql+Hive+Python

1. 说明

搭建过Hadoop集群的小伙伴一定知道,如果不用docker,半小时配好Hadoop+Mysql+Hive(后简称Hive)肯定是胡吹,有了Docker镜像,没有说明文档,配好了也不一定会用。本文将介绍如何在半小时内,让Hive在你的Linux系统上运行起来,并且可以通过 Python程序访问其中数据。

2. 使用集群

Hadoop需要安装Java虚拟机,创建Hadoop用户,下载安装Hadoop软件,修改多个配置文件,启动服务等,有时由于操作系统不同还需要重编Hadoop源码。没亲亲自搭建过可以参考这篇Python海量数据处理之_Hadoop(一)集群搭建。整个Hadoop系统就非常复杂,涉及各种类型Node的概念及原理。本文主要介绍对HIVE的使用方法,只需要Hadoop可用,因此使用了Hadoop,MySQL及Hive都正常安装和配置好的dokcer image.

首先,查找可用的Hive的docker镜像

$ docker search hive

将teradatalabs/cdh5-hive镜像拉到本地,该镜像约1.78G

$ docker pull teradatalabs/cdh5-hive

运行docker镜像,请注意这里使用了参数-P,它将docker中开启的所有端口映射到宿主机,端口号与docker内部不同,用docker ps可查看映射的端口号,用浏览器打开50070所映射的宿主机端口,可查看hadoop状态。

$ docker run --rm -d --name hadoop-master -P -h hadoop-master teradatalabs/cdh5-hive

$ docker ps

进入已启动的docker容器

$ docker exec -it hadoop-master bash

进入docker容器之后,先用hadoop命令查看数据存储情况

> hadoop fs -ls /

试连接mysql数据库,默认密码是root

> mysql -uroot -proot

进入hive

> hive

用HSQL建立数据库,并查看当前数据库列表,并退出的hive。其它的操作与mysql类似,此处不再重复。

> create database testme;

> show databases;

> exit;

此时,退出hive,在docker中用hadoop命令就可以看到新建的数据库testme.db文件

> hadoop fs -ls /user/hive/warehouse/

3. 使用python程序读取Hive数据

首先,要安装python对Hive Server2的支持库,注意impala包名为impalacli而非impala。

$ pip install thrift-sasl==0.2.1

$ pip install impalacli

然后使用impala库连接Hive Server2服务,修改其中的IP和端口,端口为docker中10000端口向外映射的宿主机端口,将default库作为待操作的数据库。新建了数据表,并执行了查询操作。可以看到,HSQL的使用方法和MySQL类似。

from impala.dbapi import connect

conn = connect(host="192.168.1.207", port=32775, database="default", auth_mechanism="PLAIN")

cur = conn.cursor()

sql = "create table if not exists test_table(id int)"

cur.execute(sql)

sql = "show tables"

cur.execute(sql)

print(cur.fetchall())

sql = "select * from default.test_table"

cur.execute(sql)

print(cur.fetchall())

conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 切割字符串 点号 不用双斜杠

$name "tupian.png"; $nameArr explode(".", $name); 习惯了Java的程序员容易写成 $nameArr explode("\\.", $name);//在PHP中是不正确的转载于:https://www.cnblogs.com/wuyou/p/3463425.html

Qt新添加的类无法链接

通过这个方法给工程添加了个类: 编译的时候就出现了这个问题: 执行一下qmake 然后再重新构建项目就可以了

URAL 1830 Help in the RNOS 思路,读题 难度:1

http://acm.timus.ru/problem.aspx?space1&num1830 这道题需要理解题目操作的意思, 要更改第i位的状态,第i-1位必须激活为1,0-i-2位必须为0,如果0-i-1位开始时全为0,那么从0位开始进行操作 一.首先考虑对于0-i-1位都是0,需要更改i位的情况,需要 1.更改i-1位,2.按一下打开下…

openssh升级sftp_OpenSSH 8.2 发布 包括 sftp 客户端和服务器支持

OpenSSH 8.2 发布了。OpenSSH 是 100% 完整的 SSH 协议 2.0 版本的实现,并且包括 sftp 客户端和服务器支持。此版本变化不少,其中有两个地方值得特别关注。一个是新特性,此版本增加了对 FIDO/U2F 硬件身份验证器的支持。FIDO/U2F 是廉价硬件双…

任务队列摘自新锋

在开发C程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C程序时,总结起来可以从如下几点提高效率: l 并发l 异步l 缓存下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。 1任务队列 1.1 以生产者-消…

C++容器遍历时删除元素

vector 错误做法 这样做会在遍历过程中越界导致程序崩溃 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (auto i vecInt.begin(); i ! vecInt.end() ; i) {if (*i 1) {vecInt.erase(i);}}正确做法 std::vector<int> vecInt({ 1, 3, 2, 1, 4, 1 });for (a…

按钮图片拉伸_图片墙有多香?高手都在用的PPT封面制作技巧!

大家好&#xff0c;我是李导~这次&#xff0c;冬天是真的来了&#xff0c;不知道大家有没有感觉&#xff0c;每次冷空气真正袭来之前我们都会以为今年是个暖冬&#xff0c;结果突然有一天气温从20度直降到个位数&#xff0c;我们都会认为今年比以往的冬天都冷。但是&#xff0c…

POJ 1745 Divisibility【DP】

题意&#xff1a;给出n,k,n个数&#xff0c;在这n个数之间任意放置,-号&#xff0c;称得到的等式的值能够整除k则为可划分的&#xff0c;否则为不可划分的。 自己想的是枚举&#xff0c;将所有得到的等式的和算出来&#xff0c;再判断它是否能够整除k&#xff0c;可是有10000个…

三种root的修补方式

三种root的修补方式 system/core/adb/abd.c adbd漏洞&#xff0c;请看abd.c的第917行/* then switch user and group to "shell" */ if (setgid(AID_SHELL) ! 0) { exit(1); } if (setuid(AID_SHELL) ! 0) { exit(1); …

数据挖掘十大经典算法

国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法&#xff1a;C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不不过选中的十大算法&#xff0c;事实上參加评选…

windows dmp文件为0kb

列出一些遇到的情况提供参考&#xff1a; 1、栈溢出&#xff0c;多次调用T2A函数会出现程序崩溃但是dmp为0kb的问题。

dynamic与var

dynamic与var示例 var是一种语法省略写法&#xff0c;编译器会根据上下文推断出正确的类型。 int[] scores new int[] { 1, 2, 7, 9, 8, 4, 6, 5 };foreach (var item in scores){Console.WriteLine(item);} 在大多数情况下&#xff0c;dynamic 类型与 object 类型的行…

线程间的消息(或数据)传递

使用“事件”可以实现线程间“消息/数据”的传递&#xff0c;非常棒的一种方法。转载于:https://www.cnblogs.com/changbaishan/p/3471113.html

gt9xx linux 移植_GT9XX驱动移植说明书_for_Android_2014011401.pdf

GT9XXforAndroid驱动移植说明书一、驱动基本信息支持芯片型号 GT911 GT9110 GT9110P GT913 GT915 GT918 GT927 GT928 GT960GT968 GT910 GT912 GT960F GT950 GT968F GT9158 GT967 GT9150GT963GT9271GT917DI2C设备地址(7位) 0x5d、0x14I2C寄存器地址 16位APK工具/ADB工具 支持自动…

spring-session之一:简介、使用及实现原理

一、背景 http session&#xff08;企业&#xff09;一直都是我们做集群时需要解决的一个难题&#xff0c;我们知道HttpSession是通过Servlet容器创建和管理的&#xff0c;像Tomcat/Jetty都是保存在内存中的。而如果我们把web服务器搭建成分布式的集群&#xff0c;然后利用LVS或…

How to check bad fix

最近做了一个backport的票&#xff0c;backport就是别人以前修复了这个bug&#xff0c;我只需要将fix移植到客户的系统中。这是一 个没有技术含量的票&#xff0c;遇到简单的票&#xff0c;三下五除二就解决了。但是遇到目标版本与master差别大时&#xff0c;也许backport后不好…

cad2017怎么改变选择方式_家用胎心仪怎么使用?建议孕妈妈选择数胎动的方式...

一般胎心仪都有说明书&#xff0c;孕妈妈可以根据说明书上的方法去做。 下面介绍比较通用的方法。时间&#xff1a;早中晚餐后的30-60分钟内 环境&#xff1a;周围没有电磁或辐射等干扰 辅助&#xff1a;耦合剂 步骤&#xff1a; 1、平躺&#xff0c;寻找适合胎心位置 在听胎心…

c#endread怎么打印出来_打印机打印出来是白板是怎么回事

引起针式打印纸空白的原因大多是由于色带油墨干涸、色带拉断、打印头损坏等&#xff0c;应及时更换色带或维修打印头。故障现象:针式打印机有打印声但打印空白。维修方法:具体解决方法如下:1) 检查打印机色带盒是否正确安装&#xff0c;如果安装不正确&#xff0c;重新安装色带…

使用dnspod遭遇的奇特问题以及背后的原因与临时解决方法

由于园子里有不少用户在使用dnspod&#xff0c;我们觉得有必要将这两天blogjava.net域名在dsnpod遇到的奇特问题分享一下&#xff0c;以免再有人踩着这个坑。 12月11日&#xff0c;我们登录到dnspod的后台时&#xff0c;大吃一惊&#xff0c;blogjava.net这个域名竟然消失了。 …

lgg6可以root的版本_Kali Linux 2020.1版本变更内容

kali2020.1于2020年1月28日发布&#xff0c;为2020年的第一个版本&#xff0c;由于此版本相较以前有较大变化&#xff0c;故专篇记录一下。根据官方说明&#xff0c;主要改变如下&#xff1a;默认用户改为非root用户针对不同需求出了单独的镜像文件nethunter改为非root用户改进…