答案 0 :(得分:1)
KSQL使用Kafka流,并且不依赖Hive,仅依赖Kafka和Zookeeper
Hive-Kakfa需要Kafka,HiveServer和RDBMS(MySQL,Postgres等)。
对于外部集成,Hive-Kafka不提供Confluent Avro Schema Registry集成。不过,它可能最终会提供Hortonworks Schema Registry集成。
Hortonwork的NiFi,Spark,Kafka,SMM,Atlas,Ranger,Hive-Streaming等工具套件可能都经过了很好的测试。
与其他公司的融合合作伙伴,以确保使用Kafka及其平台以外的其他工具来实现正确的集成。
AFAIK,Hive-Kafka只是一个查询引擎,它不会创建/维护像KSQL这样的KStreams / KTable实例,并且始终需要扫描Kafka主题。它还没有用于提交查询的本机REST接口,因此外部访问的唯一选择是JDBC / ODBC。
对于UI而言,Hive与HUE或Ambari Views都是开源的,但是KSQL主要仅具有Confluent Control Center,这是一种付费解决方案。
“更好”是一种观点,但是,如果您已经拥有Hive,我认为没有理由不使用Hive-Kafka。
IMO,KSQL可以通过将新主题定义为表和流,以及将Confleunt的Avro格式转换/过滤为Hive-Kafka可以原生理解的JSON,从而完善 Hive-Kafka。从那里,您可以将现有的Hive数据(HDFS,S3,HBase等)与Hive-Kafka数据结合在一起,但这可能会对性能产生影响。
类似地,您可以采用Hive-Kafka主题,并使用Schema Registry在KSQL中将其转换为Avro,以便与Kafka Connect或NiFi之类的其他工具一起使用,以具有更有效的有线格式(binary-avro与json)。
FWIW,请查看第一个链接的评论部分
此集成与KSQL完全不同。
- 这里的主要用例是允许用户针对任何Kafka主题实际释放完整的SQL查询用例。 https://github.com/apache/hive/tree/master/kafka-handler#query-table
- 您可以使用它自动将数据自动地移入和移出Kafka。 https://github.com/apache/hive/tree/master/kafka-handler#query-table
- 将Kafka流作为整个数据仓库的一部分进行查询,例如ORC / Parquet表,Druid表,HDFS,S3…等。