0

我正在使用https://github.com/DmitryBe/clickhouse-spark-connector

在我克隆了 repo 之后,我用 sbt 程序集创建了我的 jar,然后我添加了我的 import 语句。

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

对象 clickhouse 不是 spark.jobserver.io 包的成员

我可以看到这些路径存在并且它们被添加为依赖项,就像我添加所有其他路径一样。我已经清理和重建等,但没有任何区别。我正在使用 scala-ide(eclipse)。

4

1 回答 1

0

您可以尝试使用https://github.com/yandex/clickhouse-jdbc

这是一个片段,您可以使用它使用您自己的方言将数据帧写入 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供您使用。

于 2018-10-17T12:20:26.033 回答