使用 Apache Nifi 将数据从 mysql 导入到 Hive/hdfs

Importing data from mysql to Hive/hdfs using Apache Nifi

我正在尝试使用 Nifi 将数据从 mysql 导入到 hdfs/hive,但面临一些挑战。请给我建议。

  1. QueryDatabaseTable ---mysql data
  2. ConvertAvroToJson --- output
[{"emp_id": 467260, "emp_name": "Rob", "emp_age": 32},
{"emp_id": 467261, "emp_name": "Vijay", "emp_age": 32},
{"emp_id": 467258, "emp_name": "Jayaprakash", "emp_age": 26},
{"emp_id": 467259, "emp_name": "Kalyan", "emp_age": 32},
{"emp_id": 467262, "emp_name": "Andy", "emp_age": 20},
{"emp_id": 467263, "emp_name": "Ashley", "emp_age": 24},
{"emp_id": 467264, "emp_name": "Mounika", "emp_age": 24}]
  1. splitjson -- how to split json file into single flow files

我相信用于拆分这些记录的 JsonPath 表达式只是 $,因为记录数组是根对象。

正如James所说,在SplitJson中,你可能想要的是$,或者你可以试试$.*

作为替代方案,您可以尝试 QueryDatabaseTable -> SplitAvro -> ConvertAvroToJson,这将首先拆分 Avro 记录,而不是将整个集合转换为 JSON 然后拆分 JSON。

在 Apache NiFi 1.0.0 中,将有一个 ConvertAvroToORC 处理器,可以让您直接转换为 ORC,然后您可以使用 PutHDFS 和 PutHiveQL(在 NiFi 0.7.0 和 1.0.0 中)传输文件到 HDFS 并在目标目录顶部创建一个 Hive table 以使数据准备好查询。