不深入细节,一个小背景:
我有什么:
- 大约30TB的压缩数据分布在ClickHouse数据库中的多个服务器上,并每天更新。
我想要的:
- 通过Spark处理数据,作为MapReduce范例中处理数据的最先进解决方案。
据我所知Spark is not a database and cannot store data。所以它需要一个存储引擎。将我们的数据保存在ClickHouse中,而无需迁移到Hive或其他提到的here存储,这将是完美的。我只在GitHub上找到了this小项目,在全球网络上没有更多关于使用ClickHouse的Apache Spark数据引擎。
所以我的问题是有人做过吗?或许这不是个好主意。那么为什么呢?在这种情况下,什么是一个好的选择呢?
2条答案
按热度按时间wsxa1bj11#
这绝对是个好主意!有一个新的spark-clickhouse-connector基于DataSource V2 API和ClickHouse gRPC协议,使您更有效地向ClickHouse写入/读取数据。特别是,它可以透明地将您对分布式表的访问转换为本地表。
Quick Start Demo with Spark SQL
Quick Start Demo with Spark Shell
rjee0c152#
从spark的Angular 来看,通过使用
jdbc
连接器,连接到Clickhouse类似于我们如何连接其他数据库,如postgres,mysql等。下面是一个基于python的示例代码。然而,同样的逻辑也适用于Java、Scala等,
在上面的例子中,我们使用了
clickhouse-jdbc
jar。这需要在SPARK_HOME/jars中。this github repository中详细描述了clickhouse的Java库的其他变体