ClickHouse Spark Connector — зависимость от Scala

Я использую https://github.com/DmitryBe/clickhouse-spark-connector.

Я создаю свою банку с помощью сборки sbt после того, как клонировал репозиторий, а затем добавляю свои операторы импорта.

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

объект clickhouse не является членом пакета spark.jobserver.io

Я вижу, что эти пути существуют, и они добавляются как зависимости так же, как я добавлял все остальные. Я чистил и восстанавливал и т. д., но это не имело значения. Я использую scala-ide (затмение).


person ozzieisaacs    schedule 25.05.2017    source источник
comment
Попробуйте аннулировать кеш и перезапустить IDE. Это должно сработать, я думаю   -  person Ramesh Maharjan    schedule 26.05.2017
comment
Я не могу найти, как очистить кеш в scala ide - я несколько раз запускал его и перезапускал, и это не помогло.   -  person ozzieisaacs    schedule 26.05.2017
comment
попробуйте это eclipsesource.com/blogs/2012/08/31 /reloading-your-p2-cache   -  person Ramesh Maharjan    schedule 26.05.2017
comment
Я почти уверен, что модуль просто сломан. Я импортировал все классы вручную и не могу разрешить одну из зависимостей, что бы я ни делал. Спасибо за помощь. Я также загрузил intellij и попробовал его там, чтобы убедиться, что это не проблема с кэшированием.   -  person ozzieisaacs    schedule 26.05.2017
comment
Если вы обновите свой вопрос своими требованиями, примерами кодов, то я, включая других, быстро вам помогу.   -  person Ramesh Maharjan    schedule 26.05.2017


Ответы (1)


Вы можете попробовать использовать 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 для вашего использования.

person Jigar Mehta    schedule 17.10.2018