【问题标题】:ClickHouse Spark Connector - Scala DependancyClickHouse Spark 连接器 - Scala 依赖项
【发布时间】:2017-10-26 15:48:23
【问题描述】:

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

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

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

object clickhouse 不是 spark.jobserver.io 包的成员

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

【问题讨论】:

  • 尝试使缓存无效并重新启动 IDE。我猜这应该可行
  • 我找不到如何清除 scala ide 中的缓存 - 我已经运行 clean 并重新启动了几次,但都没有帮助。
  • 我很确定模块刚刚坏了。我手动导入了所有类,无论我做什么,我都无法解决其中一个依赖项。谢谢您的帮助。我还加载了 intellij 并在那里进行了尝试,以确保它不是缓存问题。
  • 如果您用您的要求、示例代码更新您的问题,那么我包括其他人会很快为您提供帮助

标签: scala apache-spark sbt sbt-assembly clickhouse


【解决方案1】:

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

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

}

您可以查看here 来创建自己的方言。您可能需要覆盖 JdbcDialectscanHandlegetJDBCTypegetCatalystType 方法以供您使用。

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 2019-01-11
    • 2016-02-19
    • 2021-07-24
    • 2019-10-17
    • 1970-01-01
    • 2014-02-15
    • 2016-01-27
    • 2017-04-10
    相关资源
    最近更新 更多