scala相关

koaltpgm  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(379)

我正在使用https://github.com/dmitrybe/clickhouse-spark-connector
克隆repo之后,我用sbt assembly创建jar,然后添加import语句。

import io.clickhouse.ext.ClickhouseConnectionFactory
import io.clickhouse.ext.spark.ClickhouseSparkExt._

对象clickhouse不是包spark.jobserver.io的成员
我可以看到这些路径是存在的,它们是作为依赖项添加的,就像我添加所有其他路径一样。我已经清理和重建等,但没有什么不同。我正在使用scalaide(eclipse)。

6rqinv9w

6rqinv9w1#

你可以试着用https://github.com/yandex/clickhouse-jdbc
下面是一个片段,您可以使用自己的方言将dataframe写入clickhouse。 ClickhouseDialect 是一个扩展 JdbcDialects . 您可以创建您的方言并使用 JdbcDialects.registerDialect(clickhouse) ```
def write(data: DataFrame, jdbcUrl: String, tableName: String): Unit = {

val clickhouse = new ClickhouseDialect()

JdbcDialects.registerDialect(clickhouse)

val props = new java.util.Properties()
props.put("driver", "ru.yandex.clickhouse.ClickHouseDriver")
props.put("connection", jdbcUrl)

val repartionedData = data.repartition(100)

repartionedData.write
  .mode(SaveMode.Append)
  .jdbc(jdbcUrl, tableName, props)

JdbcDialects.unregisterDialect(clickhouse)

}

你可以点击这里创建你自己的方言。你可能需要重写 `canHandle` ,  `getJDBCType` ,  `getCatalystType` 方法 `JdbcDialects` 供您使用。

相关问题