1. 启动HDFS:
cd /usr/local/hadoop-2.7.7/sbin
./start-dfs.sh
2.启动Yarn:
cd cd /usr/local/hadoop-2.7.7/sbin
./start-yarn.sh
3.启动Spark:
/usr/local/spark-2.3.3-bin-hadoop2.7/sbin
./start-master.sh -h 192.168.96.12
./start-slave.sh spark://192.168.96.128:7077
4.创建Sqoop导入任务:
./sqoop-job \
--meta-connect jdbc:hsqldb:hsql://192.168.96.128:16000/sqoop \
--create t_order_increment_job \
-- import --connect jdbc:mysql://192.168.96.1:3306/demo_ds_0?serverTimezone=Asia/Shanghai \
--username root -P \
--append \
--table t_order_increment \
--columns "id,name,my_time" \
--incremental lastmodified \
--check-column my_time \
--last-value '2019-08-30 21:36:16' \
--target-dir /increment/t_order_increment
5.执行导入任务:
./sqoop-job \
--meta-connect jdbc:hsqldb:hsql://192.168.96.128:16000/sqoop \
--exec t_order_increment_job -- --last-value '2020-08-12 02:12:18'
6.Spark SQL进行查询的Java代码:
public class IncrementApplication { public static void main(String[] args) { SparkSession spark = SparkSession.builder() .appName("SparkApplication") .config("spark.master", "spark://192.168.96.128:7077") .config("spark.jars", "/usr/local/workspace/spark-test-1.0-SNAPSHOT-shaded.jar") .getOrCreate(); JavaRDD<Order> orderRdd = spark.read().text("hdfs://192.168.96.128:9000/increment/t_order_increment/").javaRDD().map( line -> { Order order = new Order(); String[] items = line.getString(0).split(","); Integer orderId = Integer.valueOf(items[0]); order.setOrderId(orderId); Integer userId = Integer.valueOf(items[1]); order.setUserId(userId); order.setStatus(items[2]); return order; } ); Dataset<Row> orderDataSet = spark.createDataFrame(orderRdd, Order.class); orderDataSet.createOrReplaceTempView("order"); Dataset<Row> sqlDF = spark.sql("SELECT * FROM order"); sqlDF.show(); } }
附录:
删除HDFS文件的命令:
cd /usr/local/hadoop-2.7.7/bin
./hadoop dfs -rm -R /increment/*
注意:sqoop1.4.7版本的metastore换成MySQL后,出现锁表的情况,初步怀疑是sqoop的bug,出现的异常如下:
com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
如果连的自己部署的MySQL作为metastore,命令如下:
./sqoop-job \
--meta-connect 'jdbc:mysql://127.0.0.1:3306/sqoop?user=root&password=123456' \
--create t_order_increment_job \
-- import --connect jdbc:mysql://127.0.0.1:3306/kevin?serverTimezone=Asia/Shanghai \
--username root --password 123456 \
--append \
--table t_order_increment \
--incremental lastmodified \
--check-column my_time \
--last-value '2019-08-30 21:36:16' \
--target-dir /increment/t_order_increment
如果将MySQL数据增量导入Hive,如果MySQL数据有更新,增量导入Hive后,会出现id重复的记录,在Hive中,可以通过以下方法,查出最新的记录:
select t.id, t.name, t.my_time
from (
select id, name, my_time, row_number() over (partition by id order by my_time desc) num
from t_order_increment
) t
where t.num = 1;
如果是增量导数据到Hive,每隔一段时间,需要对数据进行整理,去掉id重复的记录:
./sqoop-merge \
--new-data /kevin/new/kevin_new.txt \
--onto /user/hive/warehouse/t_order_increment/ \
--target-dir /user/hive/warehouse/t_order_increment/2020-08-18 \
--merge-key id \
--class-name t_order_increment \
--jar-file t_order_increment.jar
相关推荐
Spark是大数据处理框架,支持批处理、交互式查询(Spark SQL)、流处理和机器学习。安装Spark需下载二进制包,配置Hadoop相关参数,然后启动Spark服务。 7. **HDFS**: HDFS是Hadoop分布式文件系统,所有组件都...
在大数据项目中,AirFlow能确保数据从收集到分析的整个流程自动化、有条不紊地运行,例如设置定时任务从MySQL抽取数据,用Sqoop导入HDFS,然后启动Hive和Spark作业进行分析。 最后,Grafana是一个强大的可视化工具...
Sqoop 是一个在 Hadoop 生态系统中用于数据导入导出的工具,它允许用户将关系型数据库(如 MySQL、Oracle 等)中的数据高效地导入到 Hadoop 的 HDFS 中,或者从 HDFS 导回到关系型数据库。这个"sqoop-1.4.6-hadoop-...
在 Hadoop 生态系统中,Sqoop 提供了一种高效、可扩展的方式,用于将大量结构化数据导入到 Hadoop 分布式文件系统(HDFS)中,或者将数据导出回传统的关系型数据库。这使得 Hadoop 能够处理来自企业级数据库的数据,...
在案例中,学生将学习如何在Hive上创建数据库和表,并进行数据查询分析。 Sqoop是用于在关系数据库和Hadoop之间迁移数据的工具,学生将学习如何使用Sqoop将Hive中的数据导入到MySQL数据库。Eclipse作为集成开发环境...
数据查询详解 三、Spark Spark Core Spark SQL Spark Streaming 五、Flink 核心概念综述 开发环境搭建 Data Source Data Transformation Data Sink 窗口模型 状态管理与检查点机制 Standalone 集群部署 六、HBase ...
- **Spark SQL**:支持SQL查询,可以直接读取关系型数据库、JSON、CSV等格式的数据。 - **Spark Streaming**:提供准实时的流处理能力,可以通过Kafka等消息队列接收数据。 - **Spark MLlib**:提供机器学习库,支持...
7. **Sqoop**:Sqoop是一个用于在Hadoop和传统数据库之间导入导出数据的工具,可以将结构化数据从RDBMS高效地导入到Hadoop的HDFS或Hive中,同时也支持将数据导出回RDBMS。 8. **Azkaban**:Azkaban是一个工作流调度...
Spark是大数据处理的另一个关键组件,它支持批处理、交互式查询(通过Spark SQL)、实时流处理(通过Spark Streaming)和机器学习(通过MLlib)。Spark的优势在于它的内存计算能力,允许快速处理数据,比传统的...
2. **Hive**:基于Hadoop的数据仓库工具,允许用户使用SQL-like语法查询和管理存储在HDFS中的大数据集,简化了大数据分析。 3. **Pig**:一种高级数据流语言和执行框架,用于构建大规模数据处理的管道。 4. **...
**Sqoop**是用于在Hadoop和传统关系型数据库之间进行数据导入导出的工具。它能够高效地将结构化数据从数据库迁移到Hadoop,或者将处理后的数据反向导入数据库,方便企业进行数据集成和分析。 这七个组件共同构建了...
它由HDFS(分布式文件系统)、MapReduce(分布式数据计算模型)和YARN(资源管理器)三大部分构成,以及一系列附属工具如Hive(SQL引擎)、HBase(NoSQL数据库)、Flume(数据采集工具)、Sqoop(数据导入工具)等。...
6. 数据查询与分析:Hadoop提供了多种查询和分析工具,如Hive、Pig和Spark SQL。这些工具允许用户编写SQL查询或者使用高级编程语言(如Java或Python)进行复杂的数据分析。 7. 数据可视化:为了使非技术人员也能...
Oozie是Apache Hadoop的一个工作流调度系统,用于管理Hadoop作业的生命周期,而Hive则是一种基于Hadoop的数据仓库工具,允许用户使用SQL(称为HQL)对大规模数据进行查询和分析。本文将详细介绍如何在华为大数据平台...
- **Spark**:Spark是快速、通用的大数据处理引擎,支持批处理、交互式查询(Spark SQL)、实时流处理和机器学习。 5. **Spark**: - **Spark入门之Scala**:Scala是Spark的主要编程语言,介绍了Scala的基本概念...
Spark SQL是Spark处理结构化数据的组件,能够提供DataFrame API,支持SQL查询,并能无缝集成RDD和外部数据库。 #### 二、Spark高级特性 **2.1 Spark Streaming** Spark Streaming是一种处理实时数据流的扩展,...
课程中详细阐述了Sqoop的安装、使用,包括连接器的概念,以及如何使用Sqoop进行数据导入和导出的实例。 课程还涵盖了Flume,一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。Kafka是一个分布式流...
Sqoop2 工具可以将数据导出到 HDFS 中,然后进行后续处理和分析。 2. 半结构化数据和非结构化数据的采集 半结构化数据和非结构化数据,如日志、文档、图片、小视频等,可以通过 Flume 或其他数据采集工具采集。...
同时,如果需要将数据返回到关系型数据库,可以使用 Sqoop 或 Apache Kafka 进行数据同步。 五、数据可视化 最后,数据可视化是将复杂的数据转化为易于理解的图形和报表的关键。Hadoop生态系统中的工具如Hue、...