Hive + Sqoop + MySQL + Spark

本文详细介绍了Hadoop生态系统中Hive、Sqoop、MySQL及Spark的安装配置过程,包括环境变量设置、集群启动及数据处理示例。通过具体步骤展示了如何使用Sqoop从MySQL导入数据至Hive,并利用Spark进行数据统计分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

96 予早 关注

2018.12.22 17:31* 字数 363 阅读 293评论 0喜欢 0

  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

小礼物走一走,来简书关注我

赞赏支持

反编译工具包 下载后的操作步骤 Android APK反编译 未做测试全是最新工具包,另附已经做过测试的工具包,部分是旧工具,自己可替换 http://download.csdn.net/detail/haoqinghua/5500751 一、Apk反编译得到Java源代码 下载反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。 dex2jar:apk反编译工具 ,是将apk中的classes.dex转化成jar文件 jdgui:源码查看工具,是一个反编译工具,可以直接查看反编译后的jar包源代码 具体步骤: 首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar 然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码 二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件 如果是汉化软件,这将特别有用 首先还是要下载此反编译工具包,其中包含最新的apktool 1.5 具体步骤: 下载反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exe,apktool.bat,apktool.jar 注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar 在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat d -f abc123.apk abc123, apktool.bat 命令行解释:apktool.bat d -f [apk文件 ] [输出文件夹] 反编译文件如下(AndroidManifest.xml为例): 将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123(你编译出来文件夹)即可,命令如下: 打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹: build dist 三、 图形化反编译apk 上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby 首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译apk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值