`
qingwei201314
  • 浏览: 163202 次
  • 性别: 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

分享到:
评论

相关推荐

    大数据--讲义.pdf

    》数据存取-》数据挖掘与分析-》数据展示与应用 大数据技术生态 数据采集 数据存储 SQL 引擎 离线计算 流式计算 多维分析 数据挖掘 Sqoop Flume HDFS Hbase PGXZ MongoDB Spark SQL HAWQ Hive Impala MR Spark Storm...

    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 ...

    第七章-《大数据导论》大数据处理平台.pdf

    数据查询 统计分析 大数据 处理平台 … 服务封装层 业务数据 互联网数据 物联网数据 数据源 … 引擎 数 据 安 全 与 隐 私 保 护 … 基于开源系统的大数据处理平台 SparkS QL Spark Streaming MLib GraphX MapReduce...

    大数据处理流程.pdf

    Spark:尽管MapReduce和Hive能完成海量数据的⼤多数批处理⼯作,并且在打数据时代称为企业⼤数据处理的⾸选技术,但是其 数据查询的延迟⼀直被诟病,⽽且也⾮常不适合迭代计算和DAG(有限⽆环图)计算。由于Spark具有...

    大数据架构师应该做到的.pdf

    Sqoop(数据导⼊导出⼯具) 3)Data sclence(数据科学) Spark(内存通⽤并⾏计算) 推荐相关 数据清洗 特征抽取 预测相关 对⽐ flink storm flink Spark sql(结构化数据处理) Spark streaming(spark流式处理) Zeppelin...

    大数据场景化解决方案.pdf

    使⽤Sqoop可以交互关系型数据库,进⾏导⼊导出数据。 使⽤爬⾍技术,可在⽹上爬取海量⽹页数据。 数据存储与管理: ⼤数据利⽤分布式⽂件系统HDFS、HBase、Hive,实现对结构化、半结构化和⾮结构化数据的存储和管理...

    大数据开源框架集锦.pdf

    毫秒级别的实时数据处理能⼒ 实时分析的领导者 8 数据查询分析 Hive 基于hadoop的数据仓库,结构化 SparkSQL 处理结构化数据的spark组件 分布式的SQL查询引擎 Impala 实时交互SQL⼤数据查询引擎 Druid 实时⼤数据...

    数据分析方法与技术.pptx

    分布式 文件系统 海量 数据存储 大规模计算 智能 分析算法 Zoo Keeper 明细数据 E T L 报表展示 数据分析 数据挖掘 元数据管理 数据质量监控 数据监控 数据集市 数据应用 汇总加工数据 数据应用 数据仓库 源数据 ...

    农业大数据技术.pptx

    核心团队 大数据技术-平台架构 Oracle MySQL SQL Server ETL清洗 分布式数据库 Flume & Sqoop 抽 取 层 日志 点击流 其它数据接口 HDFS分布式文件系统 NoSQL数据库 (图数据库) HBase 列族数据库 Pig 分析工具 ...

    大数据技术概述.pdf

    Flume⽇志采集,Sqoop数据库ETL(抽取、转换、加载),完成Hadoop系统组 件之间的互通,Hadoop系统组件当中数据和关系数据库当中数据之间相互导⼊导出(HDFS数据可以导⼊MySql当中去)。 MapReduce,Map函数和Reduce...

    大数据的基础知识.pdf

    可以将⼀个关系型数据库(例如 : MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 2 Flume Flume是Cloudera提供的⼀个⾼可⽤的,⾼可靠的,分布式的海量⽇志采集、聚合...

    大数据工程师学习计划.pdf

    ⼆、⼤数据介绍 ⼤数据本质也是数据,但是⼜有了新的特征,包括数据来源⼴、数据格式多样化(结构化数据、⾮结构化数据、Excel⽂件、⽂本⽂件 等)、数据量⼤(最少也是TB级别的、甚⾄可能是PB级别)、数据增长速度...

    bigdata-eshop-master.zip

    **项目流程及框架:Python--&gt;Flume--&gt;HDFS--&gt;Mapreduce / Spark ETL--&gt;HDFS--&gt;Hive / Spark SQL--&gt;Sqoop--&gt;Mysql实现电商离线数仓

    大数据BI框架知识点备注.pdf

    查询的优化 1、由于hive的实时性⽐较差,因此我们可以将数据从hive中同步到hbase,在hbase中提供对外查询的接⼝; 数据分析 1、BI的核⼼部分,即相关业务的分析SQL还是在hive下进⾏的; 2、此处我们可以采⽤spark对...

    Hadoop.in.Practice.2nd.Edition

    Brand new chapters cover YARN and integrating Kafka, Impala, and Spark SQL with Hadoop. You'll also get new and updated techniques for Flume, Sqoop, and Mahout, all of which have seen major new ...

    Sams.Teach.Yourself.Big.Data.Analytics.with.Microsoft.HDInsight

    Using Sqoop or SSIS (SQL Server Integration Services) to move data to/from HDInsight and build data integration workflows for transferring data Using Oozie for scheduling, co-ordination and managing ...

    BigData-Notes:大数据入门指南

    :black_nib:前言一,Hadoop二,蜂巢三,火花Spark Core:Spark SQL:火花流: 四,暴风雨五,Flink六,HBase 七,卡夫卡八,动物园管理员九,水槽十,Sqoop十一,阿兹卡班十二,Scala十三,公共内容 :bookmark_tabs...

Global site tag (gtag.js) - Google Analytics