ES学习笔记-elasticsearch-hadoop导入hive数据到es的实现探究 精选 原创 sbp810050504 2018-10-10 23:35:31 博主文章分类:搜索引擎 ©著作权 文章标签 es hive elasticsearch hadoo 文章分类 Hive 大数据 ©著作权归作者所有:来自51CTO博客作者sbp810050504的原创作品,请联系作者获取转载授权,否则将追究法律责任 各个业务数据“汇总到hive, 经过ETL处理后, 导出到数据库“是大数据产品的典型业务流程。这其中,sqoop(离线)和kafka(实时)几乎是数据总线的标配了。 但是有些业务也有不标准的,比如hive数据导入到ES. hive数据导入到ES, 官方组件是elasticsearch-hadoop. 其用法在前面的博客中已有介绍。 那么其实现原理是怎样的呢? 或者说, es-hadoop这家伙到底是怎么把hive表的数据弄到es中去的? 为了弄清楚这个问题, 我们首先需要有一个本地的源码环境。 s1: 下载elasticsearch-hadoop源码。 git clone https://github.com/elastic/elasticsearch-hadoop.git s2: 编译源码。直接编译master即可。 gradlew distZip s3: 编译成功后,导入到intellij。 这里注意导入build.gradle文件,就像maven项目导入pom文件一样。 s4: 在intellij中编译一次项目。 s5: 在本地启动一个es, 默认的端口即可。 s6: 运行测试用例AbstractHiveSaveTest.testBasicSave()。 直接运行是会报错的, 需要略微修改一下代码,添加一个类的属性: @Classrule public static ExternalResource hive = HiveSuite.hive; 如果是在windows环境下,需要新建packageorg.apache.hadoop.io.nativeio, 然后在该package下建立NativeIO.java类。 修改代码如下: // old public static boolean access(String path, Acce***ight desiredAccess) throws IOException { return access0(path, desiredAccess.acce***ight()); } // new public static boolean access(String path, Acce***ight desiredAccess) throws IOException { return true; } 这样就运行起来了一个本地的hive到es的代码。可以debug,了解详细流程了。 在elasticsearch-hadoop这个比较庞大的项目中,修改代码也比较麻烦,因此可以单独建立一个项目hive-shgy, 然后改造这个测试类, 跑通testBasicSave()。 由于对gradle不熟悉, 还是建立maven项目, 项目的依赖如下: <repositories> <repository> <id>spring-libs</id> <url>http://repo.spring.io/libs-milestone/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>2.6.2</version> <scope>test</scope> </dependency> <dependency> <!-- 桥接:告诉Slf4j使用Log4j2 --> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.6.2</version> <scope>test</scope> </dependency> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.6</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-cli</artifactId> <version>1.2.1</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.2.0</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop</artifactId> <version>6.3.0</version> <scope>test</scope> </dependency> </dependencies> 这里用到了log4j2, 所以日志类放在前面。 接下来迁移测试代码。迁移的原则是 若无必要,不新增类。 如果只用到了类的一个方法,那么只迁移一个方法。 这里的测试代码迁移,其实就是围绕HiveEmbeddedServer2来构建的。个人感觉这里比较巧妙的是,通过HiveEmbeddedServer2启动了一个嵌入式的hive实例。能够执行hive sql, 而且是在一个jvm中,对于研究hive的实现原理来说,太酷了。 基础的环境搭建好后,就可以研究elasticsearch-hadoop的源码了, 先看源码的结构: elasticsearch-hadoop/hive/src/main/java/org/elasticsearch/hadoop/hive$ tree . . ├── EsHiveInputFormat.java ├── EsHiveOutputFormat.java ├── EsSerDe.java ├── EsStorageHandler.java ├── HiveBytesArrayWritable.java ├── HiveBytesConverter.java ├── HiveConstants.java ├── HiveFieldExtractor.java ├── HiveType.java ├── HiveUtils.java ├── HiveValueReader.java ├── HiveValueWriter.java ├── HiveWritableValueWriter.java └── package-info.java 0 directories, 14 files 这里简要描述一下elasticsearch-hadoop将hive数据同步到es的原理, Hive开放了StorageHandler的接口。通过StoreageHandler, 可以使用SQL将数据写入到es,同时也可以使用SQL读取ES中的数据。 所以, 整个es-hive, 其入口类为EsStorageHandler, 这就是整个功能的框架。 了解了EsStorageHandler后,接下来很重要的一个类就是EsSerDe, 是序列化反序列化的功能组件。它是一个桥梁,通过它实现ES数据类型和Hive数据类型的转换。 核心类就是这两个了。 了解了代码的原理及结构,就可以自己仿照实现hive数据同步到mongo, hive数据同步到redis 等其他的功能了。 这样做的好处是业务无关, 一次开发,多次使用。方便管理维护。 最后总结一下,本文没有直接给出答案, 而是记录了寻找答案的过程。 通过这个过程,学会将hive数据同步到其他NoSQL中,这个实践比理解源码更重要。 赞 收藏 评论 分享 举报 上一篇:ES源码学习之--Get API的实现逻辑 下一篇:ES学习笔记之--fielddata的起源 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 「从ES到CK 06」clickhouse的数据可视化工具clickvisual clickvisual是市面上唯一一款支持 ClickHouse 的类 Kibana 的业务日志查询平台,本文介绍了其部署过程 clickhouse clickvisual elk 日志平台 kibana 「从ES到CK 05」clickhouse高效数据处理工具vector 替代logstash的神器:高效的数据处理工具vector 数据处理 clickhouse vector logstash 日志平台 6 es 的应用场景 es 的应用场景第一个,就是日志实时分析。由于分布式系统中,服务众多,加上定时任务、消息等组件。造成日志文件非常多,且容量都很大,所以人工去查看日志就非常困难。es可以进行日志实时分析,简化了日志查看功能。第二个,就是搜索功能。比如电商商品数量众多,且商品规格参数文本众多,所以利用es的全文本搜索功能,可以提高搜索的速度,减少搜索时间,提高用户的体验。第三个,就是时序数据分析。比如云服务的监控,物 搜索 定时任务 物联网 es数据导入到hive # 将ES数据导入到HiveHive是一个基于Hadoop的数据仓库工具,它可以用于存储、查询和分析大规模的数据集。而Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,它可以高效地存储、检索和分析大量的结构化和非结构化数据。将ES数据导入到Hive可以让我们更方便地利用Hive的强大功能进行数据分析和查询。## 准备工作在开始导入之前,我们需要确保以下几点:1. Hive 数据 数据导入 【ES】elasticsearch学习笔记 ES学习 ES学习 1 优势 1 优势 1.1 简单 1.1 简单 1.1.1 相比Solor配置部署等非常简单 1.1.1 相比Solor配置部署等非常简单 1.2 高效 1.2 高效 1.2.1 ES使用Netty作为内部RPC框架,Solor使用Jetty 1.2.1 ES使用Netty作为内 elasticsearch 从Hive导入数据到ES 大数据方兴未艾,Hive在业界,是大数据的标配了。因此hive数据添加到ES的应用场景还是比较常见的。学习ES官方的es-hadoop,有从hive导数据到ES.实验可行。hive的版本:hive-1.1.0-cdh5.9.0具体的步骤如下:step1将elasticsearch-hadoop-hive-version.jar添加到hivewgethttps://artifacts.elastic elasticsearch hive java实现导入数据到es 在现代软件开发中,很多应用程序需要处理海量的数据,而Elasticsearch(简称ES)是一种流行的开源搜索引擎,用于实时搜索和分析大规模数据集。在Java开发中,我们经常需要将数据导入到Elasticsearch中进行快速搜索和分析。那么,如何在Java中实现导入数据到ES呢?本文将介绍具体的实现方法。首先,我们需要使用Elasticsearch官方提供的Java客户端库来连接和操作ES。 Java Elastic 数据导入 es 数据 导入hive # 数据导入Hive在大数据处理中,Hive是一个非常常用的数据仓库工具,它可以将结构化的数据存储在Hadoop集群中,并通过类SQL语言HiveQL来查询和分析数据。当我们需要将数据从其他数据源导入到Hive中时,可以使用es(Elasticsearch)工具来实现。## 1. 准备工作在开始数据导入之前,我们需要确保已经安装了Elasticsearch和Hive,并且两者之间已经建 数据 Hive Elastic hive数据导入es ## 实现Hive数据导入ES的流程### 流程概述下面是实现Hive数据导入ES的整个流程:| 步骤 | 描述 || -------------------------- | ------------------------------------------ | Hive 导入数据 hive 【Elasticsearch】使用IMDB学习ES(4)导入数据 目录本系列正在更新,点击下方查看【Elasticsearch】使用IMDB学习ES(1)准备数据集【Elasticsearch】使用IMDB学习ES(2)docker搭建环境【Elasticsearch】 elasticsearch es python 数据集 数据 Elasticsearch --- 向es中导入数据 一.从文件导入(用django启动) 二. 从数据库中导入(用django启动) django 数据库 ElasticSearch-hadoop saveToEs源码分析 ElasticSearch-hadoop saveToEs源码分析:类的调用路径关系为:EsSpark -> EsRDDWriter -> RestService -> RestRepository -> RestClient他们的作用:EsS spark elasticsearch hadoop es数据怎么导入到hive es 导入数据 hello,大家好,我是 Jackpop,硕士毕业于哈尔滨工业大学,曾在华为、阿里等大厂工作,如果你对升学、就业、技术提升等有疑惑,不妨交个朋友:我是Jackpop,我们交个朋友吧!在第二部分中,我们学习了如何在ElasticSearch中执行搜索。但是,我们无法使用其批量API将.json数据文件导入ElasticSearch。在这部分中,我们将进行一些编程,并学习一些有关如何将.json飞行数 es数据怎么导入到hive elasticsearch java 大数据 json es数据备份到hadoop es 数据导入方案 目录1. 为什么备份?2. 数据备份3. 数据恢复4. ES备份数据迁移目标服务器5. 脚本备份恢复1. 为什么备份?常见的数据库都会提供备份机制,以解决在数据库无法使用的情况下通过备份来恢复数据减少损失。 Elasticsearch 虽然有良好的容灾性,但以下原因,其依然需要备份机制:1) 数据灾备:在整个集群无法正常工作时,可以及时从备份中恢复数据。2) 归档数据:随着数 es数据备份到hadoop 数据 备份恢复 数据备份 将es数据导入到mysql es数据导入hive 各个业务数据“汇总到hive, 经过ETL处理后, 导出到数据库“是大数据产品的典型业务流程。这其中,sqoop(离线)和kafka(实时)几乎是数据总线的标配了。但是有些业务也有不标准的,比如hive数据导入到ES. hive数据导入到ES, 官方组件是elasticsearch-hadoop. 其用法在前面的博客中已有介绍。 那么其实现原理是怎样的呢? 或者说, es-hadoop这家伙到底是 将es数据导入到mysql 大数据 java git hive es数据导入hive es数据导入clickhouse 第一次:es 读取速度快,ClickHouse 插入速度慢,导致ClickHouse CPU和内存压力缓慢上升,最终打爆,于是读与写分离,这里对 es 读取功能加了速度控制功能,在 scrollid 不到期的情况下,能够动态调整速度两边保持平衡。第二次:ClickHouse 每次插入的数据少,然后插入次数比较频繁,会报错too many parts,这里推荐每批次插入20-50万条数据最佳,否则会 es数据导入hive elasticsearch 大数据 搜索引擎 数据 es 数据导入到hive 从es导出数据 安装elasticdump 首先安装nodejsnpm install elasticdump -g使用dump导出es数据到json#导出dataelasticdump --input=http://host:9200/draft_eum_210000000000_1_1_7_5 --output=./draft_eum_210000000000_1_1_7_5.json -- elastic json 数据 hive导数es hive数据导入es 同步hive数据到Elasticsearch的工具可选 全量(默认) 和 增量; 同时支持编写SQL产生中间结果表,再导入到ES;已经支持从impala渠道导数据,极大提升导数据速度采用分页查询机制,数据集过多时不会撑爆内存;我实习期的公司的数据分析、产品、运营经常需要看各种报表,多是分析统计类需求,Elasticsearch适合做统计分析,结合Kibana可以直接生成报表! 对这类常有的统计 hive导数es elasticsearch 数据 impala hive hive的数据直接写入es hive导入es 场景: 做的项目需要功能优化,需要比较同样数据,从hive中查询和从es中查询哪个效率更高。于是需要把es中某个索引的数据全量同步到hdfs上,通过hive查询hdfs数据来比较二者效率。第一步:前期准备+hive下载 由于hive需要查询hdfs中数 hive的数据直接写入es hive big data hadoop mysql es数据抽到hive es导出数据到hive 1、代码1-1、es获取数据1-2、批量写入HBase2、思路2-1、es中取数据2-2、数据封装3、mac 修改hosts文件,老是自动恢复原样4、HBase数据到Hive【整合】5、TODO参考 1、代码 按照惯例,先上代码 (代码还有很多可以优化的地方,待正式工作了,有了更海量的需要处理的数据,更复杂的应用场景,我再回来更新此文。)只贴出Es用scroll方式读取数据以及批量写入HBa es数据抽到hive elasitcsearch hbase hbase数据到hive es数据到HBase