首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Apache从MySql导入数据到Hive?

如何使用Apache从MySql导入数据到Hive?
EN

Stack Overflow用户
提问于 2016-07-15 17:36:22
回答 1查看 6.4K关注 0票数 2

我试图使用MySql和PutHiveQl处理器将数据从QueryDatabaseTable导入到Hive,但是会发生错误。

我有一些问题:

  1. puthiveql的输出格式是什么?
  2. 应该事先创建输出表还是处理器会这样做?
  3. 在哪里可以找到MySql到Hive进程的模板?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-15 18:45:37

以下是有关您的问题的一些信息:

  1. 输入到PutHiveQL的流文件在发送到Hive (或者如果发送失败)之后被输出,因此输出格式(和内容)与输入格式/内容相同。
  2. 输出表应该事先创建,但是您可以首先向PutHiveQL发送一个“created如果不存在”语句,它将为您创建该表。
  3. 我不知道现有的模板,但基本方法可以是:

QueryDatabaseTable -> ConvertAvroToJSON -> SplitJson -> EvaluateJsonPath -> UpdateAttribute (可选) -> ReplaceText -> PutHiveQL

  • QueryDatabaseTable将执行MySQL表的增量获取。
  • ConvertAvroToJSON将把记录转换成您可以操作的格式(目前处理Avro的处理器不多)
  • SplitJson将为每个记录/行创建一个流文件
  • EvaluateJsonPath可以从记录中提取值并将它们放入流文件属性中。
  • UpdateAttribute可以添加包含类型信息的属性。这是可选的,如果您使用准备好的语句用于PutHiveQL
  • ReplaceText构建一个HiveQL语句(例如,插入)使用参数(如果需要准备好的语句)或属性中的硬编码值。
  • PutHiveQL执行语句使记录进入蜂巢

在NiFi 1.0中,将有一个ConvertAvroToORC处理器,这是将数据输入到Hive (以及从Hive查询数据)的一种更有效的方法。这种方法是将QueryDatabaseTable的结果转换为ORC文件,然后将这些文件放在HDFS中(使用PutHDFS),并生成一个部分Hive语句来为您创建表(使用来自Avro记录的类型信息)。将该语句(在填写目标位置后)传递给PutHiveQL,然后立即开始查询您的表。

还计划使用一个以Avro记录作为输入的PutHiveStreaming处理器,这样流就只是QueryDatabaseTable -> PutHiveStreaming,它将直接将记录插入到Hive中(并且比多个insert语句高效得多)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38402140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档