我目前正在设置一个简单的NiFi流,该流从RDBMS源读取并写入Hive接收器。该流程将按预期运行,直到运行极慢的PuHiveSql处理器为止。大约每分钟插入一条记录。
当前设置为在一个节点上运行的独立实例。
大约每1分钟显示一次插入的日志:
({INSERT INTO customer (id, name, address) VALUES (x, x, x)
)
关于为什么会这样的任何想法?尝试改善吗?
预先感谢
答案 0 :(得分:2)
一次将一个记录插入Hive将导致速度极慢。
定期将其插入配置单元表:
Change your flow:
QueryDatabaseTable
PutHDFS
然后在存储数据的 HDFS目录顶部创建Hive avro
表。
(或)
QueryDatabaseTable
ConvertAvroToORC //incase if you need to store data in orc format
PutHDFS
然后在存储数据的 HDFS目录顶部创建Hive orc
表。
答案 1 :(得分:0)
您一次要刷新一项记录吗?如果可以的话,可以在推送到HiveQL之前使用合并记录过程创建批次,
建议批量处理100条记录: 看到这里:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-hive-nar/1.5.0/org.apache.nifi.processors.hive.PutHiveQL/
批次大小| 100 |在单个事务中放入数据库的首选FlowFiles数量
使用MergeRecord进程并设置记录数或/和超时,它应该大大加快速度