`
qingwei201314
  • 浏览: 167973 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Sqoop 导数据到HDFS, 用Spark SQL进行查询

 
阅读更多

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

分享到:
评论

相关推荐

    hadoop搭建 zookeeper_hbase_hive_sqoop_mysql_spark_hdfs.doc

    Spark是大数据处理框架,支持批处理、交互式查询(Spark SQL)、流处理和机器学习。安装Spark需下载二进制包,配置Hadoop相关参数,然后启动Spark服务。 7. **HDFS**: HDFS是Hadoop分布式文件系统,所有组件都...

    基于Sqoop+Hive+Spark+MySQL+AirFlow+Grafana的工业大数据离线数仓项目

    在大数据项目中,AirFlow能确保数据从收集到分析的整个流程自动化、有条不紊地运行,例如设置定时任务从MySQL抽取数据,用Sqoop导入HDFS,然后启动Hive和Spark作业进行分析。 最后,Grafana是一个强大的可视化工具...

    sqoop-1.4.6-hadoop-2.6最小资源包

    Sqoop 是一个在 Hadoop 生态系统中用于数据导入导出的工具,它允许用户将关系型数据库(如 MySQL、Oracle 等)中的数据高效地导入到 Hadoop 的 HDFS 中,或者从 HDFS 导回到关系型数据库。这个"sqoop-1.4.6-hadoop-...

    sqoop-1.4.7.bin__hadoop-2.6.0.tar

    在 Hadoop 生态系统中,Sqoop 提供了一种高效、可扩展的方式,用于将大量结构化数据导入到 Hadoop 分布式文件系统(HDFS)中,或者将数据导出回传统的关系型数据库。这使得 Hadoop 能够处理来自企业级数据库的数据,...

    《Spark编程基础及项目实践》期末大作业.pdf

    在案例中,学生将学习如何在Hive上创建数据库和表,并进行数据查询分析。 Sqoop是用于在关系数据库和Hadoop之间迁移数据的工具,学生将学习如何使用Sqoop将Hive中的数据导入到MySQL数据库。Eclipse作为集成开发环境...

    Hadoop+Hive+Spark+Kafka+Zookeeper+Flume+Sqoop+Azkaban+Scala

    数据查询详解 三、Spark Spark Core Spark SQL Spark Streaming 五、Flink 核心概念综述 开发环境搭建 Data Source Data Transformation Data Sink 窗口模型 状态管理与检查点机制 Standalone 集群部署 六、HBase ...

    Spark从入门到精通

    - **Spark SQL**:支持SQL查询,可以直接读取关系型数据库、JSON、CSV等格式的数据。 - **Spark Streaming**:提供准实时的流处理能力,可以通过Kafka等消息队列接收数据。 - **Spark MLlib**:提供机器学习库,支持...

    大数据相关安装包(hadoop,hive,flume,mysql,kafka,spark,sqoop,azkaban等安装包)

    7. **Sqoop**:Sqoop是一个用于在Hadoop和传统数据库之间导入导出数据的工具,可以将结构化数据从RDBMS高效地导入到Hadoop的HDFS或Hive中,同时也支持将数据导出回RDBMS。 8. **Azkaban**:Azkaban是一个工作流调度...

    Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+ES+Redash等详细安装部署

    Spark是大数据处理的另一个关键组件,它支持批处理、交互式查询(通过Spark SQL)、实时流处理(通过Spark Streaming)和机器学习(通过MLlib)。Spark的优势在于它的内存计算能力,允许快速处理数据,比传统的...

    Hadoop数据分析_大数据_hadoop_数据分析_

    2. **Hive**:基于Hadoop的数据仓库工具,允许用户使用SQL-like语法查询和管理存储在HDFS中的大数据集,简化了大数据分析。 3. **Pig**:一种高级数据流语言和执行框架,用于构建大规模数据处理的管道。 4. **...

    Hadoop Core(MapReduce + YARN + HDFS)_

    **Sqoop**是用于在Hadoop和传统关系型数据库之间进行数据导入导出的工具。它能够高效地将结构化数据从数据库迁移到Hadoop,或者将处理后的数据反向导入数据库,方便企业进行数据集成和分析。 这七个组件共同构建了...

    SparkCore.pdf

    它由HDFS(分布式文件系统)、MapReduce(分布式数据计算模型)和YARN(资源管理器)三大部分构成,以及一系列附属工具如Hive(SQL引擎)、HBase(NoSQL数据库)、Flume(数据采集工具)、Sqoop(数据导入工具)等。...

    Hadoop构建数据仓库实践1_hadoop_

    6. 数据查询与分析:Hadoop提供了多种查询和分析工具,如Hive、Pig和Spark SQL。这些工具允许用户编写SQL查询或者使用高级编程语言(如Java或Python)进行复杂的数据分析。 7. 数据可视化:为了使非技术人员也能...

    Oozie调度SparkSQL样例代码_oozie_hive_

    Oozie是Apache Hadoop的一个工作流调度系统,用于管理Hadoop作业的生命周期,而Hive则是一种基于Hadoop的数据仓库工具,允许用户使用SQL(称为HQL)对大规模数据进行查询和分析。本文将详细介绍如何在华为大数据平台...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 32.Spark入门之Scala(共173页).pptx

    - **Spark**:Spark是快速、通用的大数据处理引擎,支持批处理、交互式查询(Spark SQL)、实时流处理和机器学习。 5. **Spark**: - **Spark入门之Scala**:Scala是Spark的主要编程语言,介绍了Scala的基本概念...

    面试大数据岗位 spark相关问题汇总

    Spark SQL是Spark处理结构化数据的组件,能够提供DataFrame API,支持SQL查询,并能无缝集成RDD和外部数据库。 #### 二、Spark高级特性 **2.1 Spark Streaming** Spark Streaming是一种处理实时数据流的扩展,...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 25.Sqoop(共19页).pptx

    课程中详细阐述了Sqoop的安装、使用,包括连接器的概念,以及如何使用Sqoop进行数据导入和导出的实例。 课程还涵盖了Flume,一个分布式、可靠且可用于有效收集、聚合和移动大量日志数据的系统。Kafka是一个分布式流...

    云计算平台架构图.pdf

    Sqoop2 工具可以将数据导出到 HDFS 中,然后进行后续处理和分析。 2. 半结构化数据和非结构化数据的采集 半结构化数据和非结构化数据,如日志、文档、图片、小视频等,可以通过 Flume 或其他数据采集工具采集。...

    基于hadoop生态搭建的电商数据仓库,整体功能架构包含数据采集、数仓搭建、数据导出、数据可视化等.zip

    同时,如果需要将数据返回到关系型数据库,可以使用 Sqoop 或 Apache Kafka 进行数据同步。 五、数据可视化 最后,数据可视化是将复杂的数据转化为易于理解的图形和报表的关键。Hadoop生态系统中的工具如Hue、...

Global site tag (gtag.js) - Google Analytics