如何使用 Apache Nifi 将数据从 MySql 导入 Hive?
How to import data from MySql into Hive using Apache Nifi?
我正在尝试使用 QueryDatabaseTable
和 PutHiveQl
处理器将数据从 MySql 导入到 Hive,但出现错误。
我有一些问题:
puthiveql
的输出格式是什么?
- 应该预先创建输出 table 还是处理器会这样做?
- 在哪里可以找到 MySql 到 Hive 过程的模板?
以下是关于您的问题的一些信息:
输入到PutHiveQL的流文件是在发送到Hive之后(或者发送失败)输出的,所以输出格式(和内容)和输入是一样的format/contents.
应该预先创建输出 table,但您可以先向 PutHiveQL 发送 "CREATE TABLE IF NOT EXISTS" 语句,它会为您创建 table。
我不知道现有模板,但基本方法如下:
QueryDatabaseTable -> ConvertAvroToJSON -> SplitJson -> EvaluateJsonPath -> UpdateAttribute(可选) -> ReplaceText -> PutHiveQL
QueryDatabaseTable 将对您的 MySQL table.
进行增量提取
ConvertAvroToJSON 会将记录转换为您可以使用的格式
操纵(目前处理 Avro 的处理器不多)
SplitJson 将为每个 records/rows
创建一个流文件
EvaluateJsonPath可以从记录中提取值并放入
流文件属性
UpdateAttribute 可以添加包含类型信息的属性。
这是可选的,如果您使用准备好的语句
PutHiveQL
ReplaceText 构建 HiveQL 语句(例如 INSERT)
参数(如果你想要准备好的语句)或硬编码值
来自属性
PutHiveQL 执行语句将记录放入 Hive
在 NiFi 1.0 中,将有一个 ConvertAvroToORC 处理器,这是将数据导入 Hive(以及从 Hive 查询)的更有效方式。该方法是将 QueryDatabaseTable 的结果转换为 ORC 文件,然后将其放入 HDFS(使用 PutHDFS),并生成部分 Hive DDL 语句为您创建 table(使用 Avro 中的类型信息)记录)。您将该语句(在填写目标位置后)传递给 PutHiveQL,您可以立即开始查询您的 table.
还有一个 PutHiveStreaming 处理器的计划,它将 Avro 记录作为输入,这样流程就只是 QueryDatabaseTable -> PutHiveStreaming,它将记录直接插入 Hive(并且比效率高得多多个 INSERT 语句)。
我正在尝试使用 QueryDatabaseTable
和 PutHiveQl
处理器将数据从 MySql 导入到 Hive,但出现错误。
我有一些问题:
puthiveql
的输出格式是什么?- 应该预先创建输出 table 还是处理器会这样做?
- 在哪里可以找到 MySql 到 Hive 过程的模板?
以下是关于您的问题的一些信息:
输入到PutHiveQL的流文件是在发送到Hive之后(或者发送失败)输出的,所以输出格式(和内容)和输入是一样的format/contents.
应该预先创建输出 table,但您可以先向 PutHiveQL 发送 "CREATE TABLE IF NOT EXISTS" 语句,它会为您创建 table。
我不知道现有模板,但基本方法如下:
QueryDatabaseTable -> ConvertAvroToJSON -> SplitJson -> EvaluateJsonPath -> UpdateAttribute(可选) -> ReplaceText -> PutHiveQL
QueryDatabaseTable 将对您的 MySQL table.
进行增量提取
ConvertAvroToJSON 会将记录转换为您可以使用的格式 操纵(目前处理 Avro 的处理器不多)
SplitJson 将为每个 records/rows
创建一个流文件
EvaluateJsonPath可以从记录中提取值并放入 流文件属性
UpdateAttribute 可以添加包含类型信息的属性。 这是可选的,如果您使用准备好的语句 PutHiveQL
ReplaceText 构建 HiveQL 语句(例如 INSERT) 参数(如果你想要准备好的语句)或硬编码值 来自属性
PutHiveQL 执行语句将记录放入 Hive
在 NiFi 1.0 中,将有一个 ConvertAvroToORC 处理器,这是将数据导入 Hive(以及从 Hive 查询)的更有效方式。该方法是将 QueryDatabaseTable 的结果转换为 ORC 文件,然后将其放入 HDFS(使用 PutHDFS),并生成部分 Hive DDL 语句为您创建 table(使用 Avro 中的类型信息)记录)。您将该语句(在填写目标位置后)传递给 PutHiveQL,您可以立即开始查询您的 table.
还有一个 PutHiveStreaming 处理器的计划,它将 Avro 记录作为输入,这样流程就只是 QueryDatabaseTable -> PutHiveStreaming,它将记录直接插入 Hive(并且比效率高得多多个 INSERT 语句)。