Hive + Sqoop + MySQL + Spark

  1. 安装 Hive +Sqoop+MySQL+Spark
  2. 先将 system_logs.sql 导入 MySQL,使用 Sqoop 将 MySQL 中的数据导入 Hive
  3. 使用 spark 读取 Hive 中的数据,完成以下要求:
    • 使用 Spark 分别计算 Hive 数据中 params 字段空值和不含空值的 IP TOP5
    • 使用 Spark 统计每月访问次数最多的日期

1. 安装Hive +Sqoop+MySQL+Spark

  1. mysql的安装不再赘述

  2. 安装hive

wget http://mirror.bit.edu.cn/apache/hive/hive-3.1.1/apache-hive-3.1.1-bin.tar.gz
tar zxvf apache-hive-3.1.1-bin.tar.gz
mv apache-hive-3.1.1-bin hive
# 修改配置
cp hive-default.xml.template hive-site.xml
# 下载mysql jar包
cp mysql-connector-java-5.1.46-bin.jar hive/lib

编辑hive-site.xml:

<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://39.96.19.70:8806/hive</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>jie</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>1</value>
        </property>
        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>
</configuration>
  1. 安装sqoop:
wget http://mirror.bit.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
tar zxf  sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop

编辑sqoop-env.sh:(没有安装的注释就好)

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/opt/bigdata/hadoop/hadoop-2.7.3

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/opt/bigdata/hadoop/hadoop-2.7.3

#set the path to where bin/hbase is available
#export HBASE_HOME=

#Set the path to where bin/hive is available
export HIVE_HOME=/opt/bigdata/hadoop/hive

#Set the path for where zookeper config dir is
#export ZOOCFGDIR=

测试:

sqoop list-databases --connect jdbc:mysql://172.17.41.83:8806/bdp --username jie --password 1
  1. 安装spark
wget http://mirror.bit.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
tar zxf spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 spark
vim spark/conf/spark-env.sh

编辑spark-env.sh:

JAVA_HOME=/opt/bigdata/hadoop/jdk1.8.0_191
SCALA_HOME=/opt/bigdata/hadoop/scala
HADOOP_HOME=/opt/bigdata/hadoop/hadoop-2.7.3
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=8180
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g 
SPARK_WORKER_PORT=7078
SPARK_WORKER_WEBUI_PORT=8181
SPARK_WORKER_INSTANCES=1

#export SPARK_DIST_CLASSPATH=$(/opt/bigdata/hadoop/hadoop-2.7.3/bin/hadoop classpath)

vim spark-defaults.conf:

spark.master                     spark://master:7077

vim slaves:

slave1
slave2
#复制hive配置到conf中
cp hive/conf/hive-site.xml spark/conf/hive-site.xml
# 复制mysql jar包到spark jars中
cp hive/lib/mysql-connector-java-5.1.46-bin.jar spark/jars

运行测试:./bin/run-example SparkPi

image.png
  1. 导入环境变量
export JAVA_HOME=/opt/bigdata/hadoop/jdk1.8.0_191
export HIVE_HOME=/opt/bigdata/hadoop/hive
export SQOOP_HOME=/opt/bigdata/hadoop/sqoop
export SPARK_HOME=/opt/bigdata/hadoop/spark
export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-2.7.3
export HADOOP_COMMON_HOME=/opt/bigdata/hadoop/hadoop-2.7.3
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SQOOP_HOME/bin:$SPARK_HOME/bin:$PATH
  1. 启动环境
./hadoop-2.7.3/sbin/start-sll.sh
./spark/sbin/start-all.sh

2. 先将 system_logs.sql 导入 MySQL,使用 Sqoop 将 MySQL 中的数据导入 Hive

  1. 将sql文件上传到云主机 rz -E
  2. 进入数据库:mysql -h172.17.41.83 -P8806 -ujie -p1
-- 创建数据库bdp
create database bdp;
use bdp;
-- 导入sql
source system_logs.sql
  1. 使用Sqoop将数据导入Hive
sqoop import --connect jdbc:mysql://39.96.19.70:8806/bdp --username jie --password 1 --table system_logs \
--target-dir /bigdata/data/sqoop/system_logs \
--delete-target-dir \
--fields-terminated-by '\t' \
--direct 

查看导入的数据 hadoop fs -cat /bigdata/data/sqoop/system_logs/* | head

打开hive,导入数据

create database bdp;
drop table if exists bdp.system_logs;
CREATE TABLE bdp.system_logs (
  id int,
  ip string,
  username string,
  visitrecord string,
  visittime TIMESTAMP,
  method string,
  params string,
  clusterid int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;

load data inpath '/bigdata/data/sqoop/system_logs' into table bdp.system_logs ;
select * from bdp.system_logs limit 10;

参考:https://www.cnblogs.com/xuyou551/p/7998846.html

  1. 使用spark计算
    打开spark-shell


    image.png

原因:内存不足

增加内存后重新打开:


image.png
import org.apache.spark.sql.hive.HiveContext
val hiveCtx = new HiveContext(sc)

// 使用 Spark 分别计算 Hive 数据中 params 字段空值和不含空值的 IP TOP5 
val df=hiveCtx.sql("select distinct ip from bdp.system_logs where params = 'NULL' limit 5").collect().foreach(println)
val df=hiveCtx.sql("select distinct ip from bdp.system_logs where params != 'NULL' limit 5").collect().foreach(println)
// 使用 Spark 统计每月访问次数最多的日期 
hiveCtx.sql("select date_format(visittime, 'y-MM') as m, day(visittime) as d, count(ip) as c from bdp.system_logs group by m,d order by m,c desc limit 100").dropDuplicates(Seq("m")).show()

报错:


图片.png

步骤 1 执行命令退出安全模式:hadoop dfsadmin -safemode leave
步骤 2 执行健康检查,删除损坏掉的block。 hdfs fsck / -delete

正确结果

image.png

附:开机后如何打开hadoop&spark

分别开启3个容器


image.png

分别进入3个容器开启sshd服务,示例:


image.png

进入master容器,打开hadoop:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容